私はスレッドプールを実装しています。各スレッドで必要とされる作業は1〜10秒のCPUなので、従来のスレッドプールを使用するのはうれしいですし、作業単位ごとに新しいスレッドを作成しても構いません。それは問題ではありません。複数のスレッドのうちの1つが終了するのを待ちますか?
N個のワーカースレッドのうちの1つが作業を終了し、より多くの時間(または別の時間を開始する準備ができている状態)がいつマスター制御スレッドに通知されるかを確認したいと思います。私はpthread_joinとpthread_cond_waitを見てきました。 Nの1つを待つ方法はないようです。だから私はマスタースレッドに変数を持たせて、スリープ状態にして作業者に目覚めさせることを考えました。これは、労働者が死ななければ働くようです。しかし、彼らが死ぬと、作業者がコントローラを起こしてから、死ぬまでの間に、私が対処したくないウィンドウがあります。
私はインテルのTBBを見ましたが、必要以上に複雑に見えます。
Microsoft WindowsのPTHREADSからWaitForMultipleObjectsに相当するものはありますか?
私はこれをCとタグ付けしました。そうでない場合は、自由に変更してください。 –
pthread_joinのループ(N)を試してみましたか? http://opengroup.org/onlinepubs/007908799/xsh/pthread_join.html –
私はsmall_ticketに同意します。 n pthread_joinsのループ処理ができないのはなぜですか? – Jay