2011-02-10 6 views
0

マルチスレッドジョブディスパッチャのC/C++実装を探しています。 ボススレッド(メイン関数)はジョブを読み込みます(例えば、whileループのmsgrcvの実行)。マルチスレッドのボス/ワーカーモデルのC/C++実装

ボスが新しいジョブを読み取り、宛先に応じてジョブを対応するスレッド にディスパッチします。ワーカースレッドはジョブを実行します。

私は最初からビルドする時間がありません。私はすぐに解決策を探しています。

更新:私はブーストを使用できません。それはpthreadsでなければなりません(Linux)

答えて

1

あなたはスレッドプールの後ろにいるようなサウンドです。 1つはhere(それはboostを必要とする)見つけることができます。私は、 "スレッドプール"または類似のものが他の可能性をもたらすと確信しています。

+0

申し訳ありませんが、ブーストはオプションではありません – cateof

+1

スレッドプーリングは、スティーブがgoogleと言ったようなパターンケイトです。 – Reno

+1

は、スレッドプールが必要です。ブーストを使用できない場合は、その特定の実装を使用する必要はありませんが、コードを見てどのように実行されたかを確認することができます。 – CashCow

3

最も単純なオプションは、ジョブが読み込まれるときに通知される条件変数でワーカースレッドを待機させることです。

条件を確認しながらロックされるミューテックスが必要です。条件変数を待つと、条件が合意されてスレッドがその状態になるまで、自動的に関連するミューテックスのロックを解除します。あなたの状態をもう一度チェックしてください。

各キューに対して1つの条件変数を持つことも、すべてのスレッドに対して1つの条件変数を設定することもできます。これは、どのようにスケーリングされるかによって異なります。

関連する問題