linux下,现在有一个线程A需要等待其他一组线程(比如说5个)B处理完成才能进行处理,但是线程组B处理完成后不会退出,需要等待下一个循环处理,那么线程A可以通过什么方式获得线程组B是否处理完成呢?
想过用信号量或者条件变量,但是信号量和条件变量貌似都是多个线程等一个线程的情况,用全局变量累计貌似比较笨,请问各位大神有没有什么方法?谢谢
3 个解决方案
#1
《Windows核心编程》
#2
用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。
#3
就是把B线程组作为一个整体,等B线程组都执行完,执行完一个计数器加1,等执行完再向A发信号。
#1
《Windows核心编程》
#2
用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。
#3
就是把B线程组作为一个整体,等B线程组都执行完,执行完一个计数器加1,等执行完再向A发信号。