次の方法で共有


<mutex>

クラス mutexrecursive_mutextimed_mutexrecursive_timed_mutexを定義する標準ヘッダー <mutex> が含まれています; テンプレート lock_guardunique_lock; コードと相互排他領域を定義する関数およびサポート型。

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

#include <mutex>

解説

[!メモ]

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

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

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

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

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

型引数として lock_guard テンプレートと unique_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を提供する、基本的なロックできる型です。タイムアウト ミューテックスの型は、期限付きでロックできる型です。

Hh921467.collapse_all(ja-jp,VS.110).gifClasses

名前

説明

lock_guard クラス

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

mutexのクラス (STL)

ミューテックスの型を表します。プログラム内の相互排他を実装するには、この型のオブジェクトを使用します。

recursive_mutex クラス

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

recursive_timed_mutex クラス

期限付きミューテックスの型を表します。プログラム内の時間制限付きブロックを持つ相互排他を実装するには、この型のオブジェクトを使用します。型 timed_mutexのオブジェクトとは異なり、recursive_timed_mutex のオブジェクトのロックのメソッドを呼び出すと、明示されています。

timed_mutex クラス

期限付きミューテックスの型を表します。プログラム内の時間制限付きブロックを持つ相互排他を実装するには、この型のオブジェクトを使用します。

unique_lock クラス

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

Hh921467.collapse_all(ja-jp,VS.110).gif関数

名前

説明

call_once 関数

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

lock 機能

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

Hh921467.collapse_all(ja-jp,VS.110).gif構造体

名前

説明

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 種類を選択するために使用されます。

Hh921467.collapse_all(ja-jp,VS.110).gif変数

名前

説明

adopt_lock の変数

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

defer_lock の変数

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

try_to_lock の変数

また、ブロックに渡すコンストラクターは mutex のロックの解除を試みることを示すために unique_lock のコンストラクターに渡すことができるオブジェクトを表します。

参照

その他の技術情報

ヘッダー ファイル