私のアプリケーションでは、Boostスレッドの代わりにC++0xスレッドを使用することを検討しています。ただし、標準のC ++ 0xスレッドにはメソッドがないように見えるため、これを再実装する方法がわかりませんinterrupt()
。
私の現在の設定は次のとおりです。
- 作業を管理するマスタースレッド。
- マスターのコマンドを実行するいくつかのワーカースレッド。
ワーカーはwait()
、少なくとも2つの異なる条件変数を呼び出します。マスターには「タイムアウト」状態があります。この場合、すべてのワーカーに停止して、それまでに得た結果を出すように指示します。Boostスレッドでは、マスターinterrupt_all()
はスレッドグループを使用するだけで、ワーカーは待機を停止します。現時点で待機していない場合、マスターはbool
ワーカーが定期的にチェックするフラグも設定します。
ただし、C ++ 0xではstd::thread
、の代わりにはなりませんinterrupt()
。私は何かが恋しいですか?そうでない場合、どうすれば上記のスキームを実装して、労働者が永遠に眠ることができないようにすることができますか?