次の方法で共有


<condition_variable>

true になるは、要件を待機するオブジェクトを作成するために使用されるクラス condition_variablecondition_variable_any を定義します。

このヘッダーは ConcRT のそのほかの機構とともに使用できるように同時実行ランタイムの (ConcRT) を使用します。ConcRT に関する詳細については、同時実行ランタイムを参照してください。

#include <condition_variable>

[!メモ]

/clr/clr:pureを使用してコンパイルされたコードでは、このヘッダーはブロックされます。

Hh874761.collapse_all(ja-jp,VS.110).gif解説

要件の変数の待機時間が、mutexを使用しなければならないコード。呼び出し元スレッドが要件の変数を待機している関数を呼び出す前に mutex をロックする必要があります。mutex は、呼び出された関数が返されるとき、ロックされます。mutex は、スレッドが true になるは、要件を待っている間、ロックされません。予測できない結果がないように、要件の変数の待機時間が mutex の同じオブジェクトを使用する必要がある各スレッド。

condition_variable_any のオブジェクトは、任意の型のミューテックスで使用できます。使用されるミューテックスの型は try_lock のメソッドを用意する必要はありません。condition_variable 型のオブジェクトを型の **unique_lock<mutex>**ミューテックスとのみ使用できます。この型のオブジェクトを型のオブジェクト **condition_variable_any<unique_lock<mutex>>**より高速な場合があります。

イベントを待機するには、まずミューテックスをロックし、条件の変数の wait のメソッドのうち 1 つがを呼び出します。別のスレッドまでの wait の呼び出しのブロックは必要条件の変数に通知します。

にせのアラーム、 要求の変数を待機するスレッドが適切な通知なしでブロックを除外とすると発生します。コードが待機している関数から返される場合に true になる条件の待機時間が明示的にその条件をチェックする必要があります。このようなにせのアラームを確認するには、コード。これは通常、ループを使用しています;、このループの実行に wait(unique_lock<mutex>& lock, Predicate pred) を使用できます。

while (condition is false)
    wait for condition variable;

condition_variable_anycondition_variable は、それぞれがあります。条件を待機する 3 とおりの方法を示します。

  • wait は、無期限に待機します。

  • 指定 timeまでのwait_until の を待ちます。

  • wait_for は指定 time intervalを待機します。

これらの各メソッドに 2 個のオーバーロードされたバージョンがあります。第 1 の方法では、待ち、疑って目覚めるできます。そのほかは述語を定義する追加のテンプレートの引数を受け取ります。メソッドは true述語がになるまで制御を戻しません。

各クラスには、状態は true要件の変数であることを通知するために使用する 2 とおりの方法があります。

  • notify_one、要求の変数を待機しているスレッドの 1 を目覚めます。

  • notify_all、要求の変数を待機するスレッドをすべて目覚めます。

参照

関連項目

condition_variable クラス

condition_variable_any クラス

cv_status の列挙

その他の技術情報

ヘッダー ファイル