recursive_mutex クラス
mutex 型を表します。 mutex とは異なり、既にロックされているオブジェクトのロック メソッドを呼び出す動作は詳細に定義されています。
構文
class recursive_mutex;
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
recursive_mutex | recursive_mutex オブジェクトを構築します。 |
~recursive_mutex デストラクター | recursive_mutex オブジェクトによって使用されているすべてのリソースを解放します。 |
パブリック メソッド
名前 | 説明 |
---|---|
lock | 呼び出しスレッドがミューテックスの所有権を取得するまでそのスレッドをブロックします。 |
try_lock | ブロックせずにミューテックスの所有権を取得しようとします。 |
unlock | ミューテックスの所有権を解放します。 |
要件
ヘッダー:<mutex>
名前空間: std
lock
呼び出しスレッドが mutex
の所有権を取得するまでそのスレッドをブロックします。
void lock();
解説
呼び出しスレッドが既に mutex
を所有している場合、メソッドが直ちに返され、以前のロックは有効のままになります。
recursive_mutex
ロックされていない recursive_mutex
オブジェクトを構築します。
recursive_mutex();
~recursive_mutex
オブジェクトによって使用されるすべてのリソースを解放します。
~recursive_mutex();
解説
デストラクターの実行時にオブジェクトがロックされる場合の動作は未定義です。
try_lock
ブロックせずに mutex
の所有権を取得しようとします。
bool try_lock() noexcept;
戻り値
メソッドが mutex
の所有権を正常に取得した場合、または呼び出し元のスレッドがすでに mutex**; otherwise, **false
を所有している場合は true
です。
解説
呼び出しスレッドが既に mutex
を所有している場合、関数が直ちに true
を返し、以前のロックは有効のままになります。
ロック解除
ミューテックスの所有権を解放します。
void unlock();
解説
このメソッドが mutex
の所有権を開放するのは、lock および try_lock が recursive_mutex
オブジェクト上で正常に呼び出されたのと同じ回数だけ呼び出された後のみです。
呼び出しスレッドが mutex
を所有していない場合の動作は未定義です。