作成後にC++ 11スレッドが開始されるまで待つ方法は? スレッドが実行されているかどうかを確認する特別な方法を提供する他のスレッド ライブラリ (Qt など) とは異なり、そのための方法はないようです。
質問する
4971 次
2 に答える
12
言語定義では、コンストラクターが戻る前に新しいスレッドが開始されている必要があります。正式には、[thread.thread.constr] /5: "コンストラクターの呼び出しの完了は、f のコピーの呼び出しの開始と同期します。"
于 2013-08-14T21:19:27.537 に答える
6
なぜ最初から開始するのを待つ必要があるのか わかりませんが、そうする場合は、ミューテックス、条件、および開始されているかどうかを示すフラグを使用する必要があります。新しく作成されたスレッドで、ミューテックスをロックし、フラグを «true» に設定し、条件変数でウェイターに通知します。スレッドを作成するコードで、ミューテックスをロックし、フラグを確認します。フラグが «true» の場合 - スレッドが開始されます。«false» の場合は、条件変数を待機し、起動されたら繰り返します。
于 2013-08-14T20:21:10.787 に答える