>> 443
>> 444
こんなこと。

まず始めに、X個のジョブをジョブキューに格納。
次にメインスレッドがワーカスレッドを10匹作成。
【1:MAIN 】全てのワーカスレッドが、クリーンアップキューに格納されるまで待機(※1)。
【2:MAIN 】※2で待機しているワーカスレッドを一斉起動。
【3:MAIN 】ワーカスレッドとメインスレッドをjoin。
【1:worker】ジョブキューにジョブが存在する間、各ワーカはジョブを処理する。
【2:worker】ジョブキューが空っぽになったら、ワーカスレッドはクリーンアップキューに入り、待機(※2)。
このとき、最後に格納されたワーカスレッドが※1で待機しているメインスレッドにシグナルを贈り
メインを起動させる。

メインスレッドが"【1:MAIN 】"のステップを踏む前に、
ワーカスレッドが"【2:worker】"のステップを踏んだ場合、
デッドロックになるよね?
今は、sleep()をワーカスレッドにつかって【1:MAIN 】→【2:worker】
ってなるようにしてるけど、ふつー、こんなアッフォなことしないだろうと。
いったい、どうすればいいのさ。

最近、スレッドプログラミング始めたばっかりの者なんで、
けっこう頭わるそうな、質問かもしれませんが、おおめに見てやってくださいな。