この質問が既に表示されている場合は、お詫び申し上げます。
すでに設定されている条件変数をクリアすることはできますか?私は以下を達成したいかについて
詳細:条件付き変数をリセットする(ブースト)
void worker_thread {
while (wait_for_conditional_variable_execute) {
// process data here
// Inform main thread that the data got processed
// Clear the conditional variable 'execute'
}
}
NOTE そのデータを処理しなければならないワーカースレッドが一度だけ、それが設定するメインスレッドを待つべきでは再び
を条件変数を「実行します」私も
以下void worker_thread {
while (wait_for_conditional_variable_execute) {
if (flag) { flag = 0; }
// process data here. The `flag` will be set by main thread
}
}
のようなフラグを持つ。しかし、私は、これはフラグのポーリングにすぎないとして、これはCPU集約的だろうと考えていますについて考えました。そうじゃない?
私は _1のような詳細はほとんど言及していませんでした。ジョブが終了するたびに新しいスレッドを作成することはできません。 2.管理するスレッドが100個あるため、フラグのポーリングは受け入れられません_ – boomerang
これを[tag:boost-thread]でタグ付けしたように、バージョンを使用していると仮定できますかC++のC++ 11よりも低いので、 'boost :: thread'と' boost :: condition_variable'を使用していますか? – Tas
@Tas、yes ..私はC++を使用しています...ちょうど、私は 'boost :: thread'か' QThread'(QTプロジェクトなので)のどちらかをまだ決めていません。しかし、私は間違いなく 'boost :: condition_variable'を使用します。 – boomerang