我有一个产生最多 M 个工作线程的老板线程。在计划的整个生命周期中,可以添加和删除工人。当程序范围的关闭标志发出信号时,我想等待这些工作人员的完成。
目前,任何线程都可以添加/删除线程,但只要任何线程都可以启动生成/删除,这不是严格要求。
是什么阻止我使用计数信号量,或者pthread_barrier_wait()
它需要固定数量的线程。
我也不能遍历pthread_join()
所有工作人员,因为我可能会泄露已经退出并可能从那时起被替换的僵尸线程。
老板线程本身除了最初产生线程并确保进程正常退出之外没有其他目的。
我在这个问题上断断续续地度过了好几天,无法想出一些强大而简单的东西。是否有任何相当完善的方法可以使用 POSIX 线程来完成此任务?