多线程下一个线程等待其他多个线程处理完成的问题

时间:2023-01-05 16:56:07
初学者 问个问题,请各位帮忙看看
linux下,现在有一个线程A需要等待其他一组线程(比如说5个)B处理完成才能进行处理,但是线程组B处理完成后不会退出,需要等待下一个循环处理,那么线程A可以通过什么方式获得线程组B是否处理完成呢?
想过用信号量或者条件变量,但是信号量和条件变量貌似都是多个线程等一个线程的情况,用全局变量累计貌似比较笨,请问各位大神有没有什么方法?谢谢

3 个解决方案

#1


《Windows核心编程》

#2


用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。

#3


引用 2 楼 cfjtaishan 的回复:
用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。

就是把B线程组作为一个整体,等B线程组都执行完,执行完一个计数器加1,等执行完再向A发信号。

#1


《Windows核心编程》

#2


用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。

#3


引用 2 楼 cfjtaishan 的回复:
用信号量吧,pthread_cond_signal, pthread_cond_wait,为什么不等线程组B都执行完(做一个计数器,B线程组里有多少个线程,计数器就到了线程数就发信号pthread_cond_signal)再发信号呢。

就是把B线程组作为一个整体,等B线程组都执行完,执行完一个计数器加1,等执行完再向A发信号。