我的问题类似于如何在使用 pthread 时检查线程是否终止?。但我没有完全得到答案。
我的问题是......我创建了一定数量的线程,比如n。一旦 main 检测到任何一个线程的退出,它就会创建另一个线程,从而保持并发度为 n 等等。
主线程如何检测线程的退出。pthread_join 等待特定线程退出,但在我的例子中,它可以是 n 个线程中的任何一个。
谢谢
最明显的是,无需像 aix 建议的那样重构代码,而是让每个线程设置一些内容来指示它已完成(可能是所有线程之间共享的数组中的值,每个工作线程一个槽),然后向条件变量发出信号。主线程等待条件变量,每次醒来时,处理所有已指示自己已完成的线程:可能有多个。
当然,这意味着如果线程被取消,您永远不会收到信号,因此请使用取消处理程序或不要取消线程。
| 归档时间: |
|
| 查看次数: |
5916 次 |
| 最近记录: |