次の方法で共有


recursive_timed_mutex クラス

timed mutex 型を表します。 この型のオブジェクトは、プログラム内での時間制限ブロックを使った相互排他を強制するのに使用されます。 timed_mutex 型のオブジェクトとは異なり、recursive_timed_mutex オブジェクトにロック メソッドを呼び出すことによる影響は詳細に定義されています。

構文

class recursive_timed_mutex;

メンバー

パブリック コンストラクター

名前 説明
recursive_timed_mutex ロックされていない recursive_timed_mutex オブジェクトを構築します。
~recursive_timed_mutex デストラクター recursive_timed_mutex オブジェクトによって使用されているすべてのリソースを解放します。

パブリック メソッド

名前 説明
lock 呼び出しスレッドが mutex の所有権を取得するまでそのスレッドをブロックします。
try_lock ブロックせずに mutex の所有権を取得しようとします。
try_lock_for 指定した時間間隔で、mutex の所有権の取得を試みます。
try_lock_until 指定した時刻まで mutex の所有権の取得を試みます。
unlock mutex の所有権を解放します。

要件

ヘッダー:<mutex>

名前空間: std

lock

呼び出しスレッドが mutex の所有権を取得するまでそのスレッドをブロックします。

void lock();

解説

呼び出しスレッドが既に mutex を所有している場合、メソッドが直ちに返され、以前のロックは有効のままになります。

recursive_timed_mutex コンストラクター

ロックされていない recursive_timed_mutex オブジェクトを構築します。

recursive_timed_mutex();

~recursive_timed_mutex デストラクター

recursive_timed_mutex オブジェクトによって使用されているすべてのリソースを解放します。

~recursive_timed_mutex();

解説

デストラクターの実行時にオブジェクトがロックされる場合の動作は未定義です。

try_lock

ブロックせずに mutex の所有権を取得しようとします。

bool try_lock() noexcept;

戻り値

メソッドが mutex の所有権を正常に取得した場合、または呼び出しスレッドがすでに mutex を所有している場合は true、それ以外の場合は false です。

解説

呼び出しスレッドが既に mutex を所有している場合、関数が直ちに true を返し、以前のロックは有効のままになります。

try_lock_for

ブロックせずに mutex の所有権を取得しようとします。

template <class Rep, class Period>
bool try_lock_for(const chrono::duration<Rep, Period>& Rel_time);

パラメーター

Rel_time
メソッドが mutex の所有権の取得を試行する時間について、その最大値を指定する chrono::duration オブジェクト。

戻り値

メソッドが mutex の所有権を正常に取得した場合、または呼び出し元のスレッドがすでに mutex を所有している場合は true、それ以外の場合は false です。

解説

呼び出しスレッドが既に mutex を所有している場合、メソッドが直ちに true を返し、以前のロックは有効のままになります。

try_lock_until

ブロックせずに mutex の所有権を取得しようとします。

template <class Clock, class Duration>
bool try_lock_for(const chrono::time_point<Clock, Duration>& Abs_time);

bool try_lock_until(const xtime* Abs_time);

パラメーター

Abs_time
メソッドが mutex の所有権の取得を止めるしきい値を指定する時点。

戻り値

メソッドが mutex の所有権を正常に取得した場合、または呼び出し元のスレッドがすでに mutex を所有している場合は true、それ以外の場合は false です。

解説

呼び出しスレッドが既に mutex を所有している場合、メソッドが直ちに true を返し、以前のロックは有効のままになります。

ロック解除

mutex の所有権を解放します。

void unlock();

解説

このメソッドが mutex の所有権を開放するのは、locktry_locktry_lock_for、および try_lock_untilrecursive_timed_mutex オブジェクト上で正常に呼び出されたのと同じ回数だけ呼び出された後のみです。

呼び出しスレッドが mutex を所有していない場合の動作は未定義です。

関連項目

ヘッダー ファイル リファレンス
<mutex>