<mutex>

クラス mutex、<recursive_mutex>、timed_mutexrecursive_timed_mutexを定義する標準ヘッダーのミューテックスを含めてください; テンプレート lock_guardunique_lock; および相互排他コード領域を定義する関数およびサポート型。

このヘッダーでは同時実行ランタイム (ConcRT) が使用されます。これにより、このヘッダーを他の ConcRT メカニズムと共に使用できます。 ConcRT の詳細については、「同時実行ランタイム」を参照してください。

#include <mutex>

解説

注意

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

クラス mutexrecursive_mutex は ミューテックスの型です。 ミューテックスの型に既定のコンストラクターが例外をスローしないデストラクターが存在する。 これらのオブジェクトには、複数のスレッドが同じオブジェクトをロックしようと相互排他を提供するメソッドがあります。 具体的には、ミューテックスの型は、メソッド locktry_lockunlockが含まれます。:

  • lock のメソッドは、スレッドがミューテックスの所有権を取得するまで呼び出し元スレッドをブロックします。 この戻り値は無視されます。

  • try_lock のメソッドは、ブロックするミューテックスの所有権を取得することを試みます。 その戻り値の型は、メソッドが所有権を取得する一方で、それ以外の場合は falseです bool に変換可能で、true。

  • unlock のメソッドは、呼び出し元のスレッドからミューテックスの所有権を解放します。

型引数としてテンプレート lock_guardunique_lockをインスタンス化するためにミューテックスの型を使用できます。 テンプレート condition_variable_anyで待機のメンバー関数の Lock の引数としてこれらの型のオブジェクトを使用できます。

指定されたミューテックスの型は、ミューテックスの型の要件を満たします。 また、1 個の引数を使用して呼び出し可能である必要があり、boolに変換可能な型を返す必要があります try_lock_fortry_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を提供する、基本的なロックできる型です。 指定されたミューテックスの型は、指定されたロックできる型です。

クラス

名前

説明

lock_guard クラス

デストラクターが mutexをロック解除するオブジェクトを作成するにインスタンス化することができるテンプレートを表します。

mutex クラス (STL)

mutex 型を表します。 プログラム内の相互排他を適用するには、この型のオブジェクトを使用します。

recursive_mutex クラス

mutex 型を表します。 mutex クラスへのとは対照的に、既にロックされているオブジェクトのロック メソッドを呼び出すことの動作を明示します。

recursive_timed_mutex クラス

指定されたミューテックスの種類を表します。 プログラム内のタイム限られたブロッキングがある相互排他を適用するには、この型のオブジェクトを使用します。 型 timed_mutexオブジェクトとは異なり、recursive_timed_mutex オブジェクトのロック メソッドを呼び出した場合は、明示されています。

timed_mutex クラス

指定されたミューテックスの種類を表します。 プログラム内のタイム限られたブロッキングがある相互排他を適用するには、この型のオブジェクトを使用します。

unique_lock クラス

mutexのロックとロック解除を管理するオブジェクトを作成するにインスタンス化することができるテンプレートを表します。

関数

名前

説明

call_once 関数

実行時に指定された呼び出し可能オブジェクトを呼び出すには、一度に機能を提供します。

lock 関数

デッドロックなしですべての引数をロックします。

構造体

名前

説明

adopt_lock_t 構造体

adopt_lockを定義するために使用される型を表します。

defer_lock_t 構造体

unique_lockのオーバーロードされたコンストラクターの 1 種類の選択に使用する defer_lock オブジェクトを定義する型を表します。

once_flag 構造体

struct を表し、初期化コードは一度だけ呼び出される、複数の実行スレッドの前にことを保証するために、テンプレート関数 call_once で使用されています。

try_to_lock_t 構造体

struct を表します try_to_lock オブジェクトを定義し、unique_lockのオーバーロードされたコンストラクターの 1 を選択するために使用します。

変数

名前

説明

adopt_lock 変数

lock_guard のコンストラクターに渡すことができるように、コンストラクターに渡されているミューテックス オブジェクトであることを示す unique_lock がロックされているオブジェクトを表します。

defer_lock 変数

unique_lockのコンストラクターに渡すことができるオブジェクトをコンストラクターがその渡されているミューテックス オブジェクトをロックする必要があることを示すために表します。

try_to_lock 変数

そのブロックせずに渡されているコンストラクターは mutex ロックを解除しようとしたことを示すために unique_lock のコンストラクターに渡すことができるオブジェクトを表します。

参照

その他の技術情報

C++ 標準ライブラリのヘッダー ファイル