最大 M 個のワーカー スレッドを生成するボス スレッドがあります。プログラムの存続期間中に、ワーカーが追加および削除される場合があります。プログラム全体のシャットダウン フラグが通知されたら、これらのワーカーの完了を待ちたいと思います。
現在、どのスレッドでもスレッドを追加/削除できますが、任意のスレッドがスポーン/削除を開始できる限り、厳密には必須ではありません。
カウントセマフォの使用を妨げpthread_barrier_wait()
ているのは、固定数のスレッドが必要なためです。
すべてのワーカーをループpthread_join()
することもできません。これは、終了してから置き換えられた可能性のあるゾンビ スレッドがリークする危険があるためです。
Boss スレッド自体には、最初にスレッドを生成し、プロセスが正常に終了することを確認する以外の目的はありません。
私はこの問題に何日も費やしてきましたが、堅牢でシンプルなものを思いつくことはできません。POSIXスレッドでこれを達成するためのかなり確立された方法はありますか?