<mutex>
クラス mutex、recursive_mutex、timed_mutexと recursive_timed_mutexを定義する標準ヘッダー <mutex> が含まれています; テンプレート lock_guard と unique_lock; コードと相互排他領域を定義する関数およびサポート型。
このヘッダーは ConcRT のそのほかの機構とともに使用できるように同時実行ランタイムの (ConcRT) を使用します。ConcRT に関する詳細については、同時実行ランタイムを参照してください。
#include <mutex>
解説
[!メモ]
/clr か /clr:pureを使用してコンパイルされたコードでは、このヘッダーはブロックされます。
クラス mutex と recursive_mutex は、ミューテックスの型です。ミューテックスの型に既定のコンストラクターとデストラクター例外をスローすることがあります。これらのオブジェクトに複数のスレッドが同じオブジェクトをロックしようとしたときに、相互排他を提供するメソッドがあります。具体的には、ミューテックスの型は、メソッド lock、try_lockと unlockが含まれています:
lock のメソッドは、スレッドがミューテックスの所有権を取得するまで呼び出し元スレッドをブロックします。この戻り値は無視されます。
try_lock のメソッドは、ブロックされたミューテックスの所有権を取得することを試みます。その戻り値の型は、メソッドが所有権を取得するには、が falseです bool に変換可能で、true。
unlock のメソッドは、呼び出し元のスレッドからミューテックスの所有権を解放します。
型引数として lock_guard テンプレートと unique_lockをインスタンス化するには、ミューテックスの型を使用できます。テンプレート condition_variable_anyで待ち時間のメンバー関数への Lock の引数としてこれらの型のオブジェクトを使用できます。
期限付きミューテックスの型は、ミューテックスの型の要件を満たします。また、引数に 1 を使用して呼び出し可能である必要があり、boolに変換可能な型を返す必要があります try_lock_for と try_lock_until のメソッドが。期限付きミューテックスの場合は、追加の引数を使用してそれらの追加の引数にすべて既定値がの場合、これらの関数を定義できます。
try_lock_for のメソッドは 1 個の引数、型が chrono::durationのインスタンス化である Rel_timeを使用して呼び出し可能である必要があります。メソッドは、ミューテックスの所有権を取得することを試みますが Rel_timeによって示される時間内に成功に関係なくを返します。戻り値は true にメソッドが所有権を取得します;変換 それ以外 falseへの戻り値に変換します。
try_lock_until のメソッドは 1 個の引数、型が chrono::time_pointのインスタンス化である Abs_timeを使用して呼び出し可能である必要があります。メソッドは、成功に関係なく、ミューテックスの所有権を取得 Abs_timeによって示される時間よりも後で取得することはありません。戻り値は true にメソッドが所有権を取得します;変換 それ以外 falseへの戻り値に変換します。
ミューテックスの型は、ロックできる型です。メンバー関数 try_lockを提供する、基本的なロックできる型です。タイムアウト ミューテックスの型は、期限付きでロックできる型です。
Classes
名前 |
説明 |
---|---|
デストラクターが mutexのロックを解除するオブジェクトを作成するインスタンスを作成できるテンプレートを表します。 |
|
ミューテックスの型を表します。プログラム内の相互排他を実装するには、この型のオブジェクトを使用します。 |
|
ミューテックスの型を表します。mutex のクラスには対照的に、既にロックされているオブジェクトのロックのメソッドの呼び出しと動作に定義されています。 |
|
期限付きミューテックスの型を表します。プログラム内の時間制限付きブロックを持つ相互排他を実装するには、この型のオブジェクトを使用します。型 timed_mutexのオブジェクトとは異なり、recursive_timed_mutex のオブジェクトのロックのメソッドを呼び出すと、明示されています。 |
|
期限付きミューテックスの型を表します。プログラム内の時間制限付きブロックを持つ相互排他を実装するには、この型のオブジェクトを使用します。 |
|
mutexのロックおよびロックの解除を管理するオブジェクトを作成するインスタンスを作成できるテンプレートを表します。 |
関数
名前 |
説明 |
---|---|
実行時に指定された呼び出し可能オブジェクトだけを呼び出すための機構を一度提供します。 |
|
デッドロックなしですべての引数をロックします。 |
構造体
名前 |
説明 |
---|---|
adopt_lockを定義するために使用する型を表します。 |
|
unique_lockのオーバーロードされたコンストラクターの 1 種類を選択するために使用される defer_lock のオブジェクトを定義する型を表します。 |
|
struct を表し、初期化コードは一度だけ呼び出されます複数の実行スレッドの前でように、このテンプレート関数 call_once に使用されます。 |
|
struct を表します try_to_lock のオブジェクトを定義し、unique_lockのオーバーロードされたコンストラクターの 1 種類を選択するために使用されます。 |
変数
名前 |
説明 |
---|---|
lock_guard のコンストラクターに渡すことができる、コンストラクターに渡すミューテックスを追加することを示す unique_lock をロックするオブジェクトを表します。 |
|
unique_lockのコンストラクターに渡すことができるオブジェクトをそのコンストラクターが渡されているミューテックス オブジェクトをロックしないことを示すために、表します。 |
|
また、ブロックに渡すコンストラクターは mutex のロックの解除を試みることを示すために unique_lock のコンストラクターに渡すことができるオブジェクトを表します。 |