名前付き要件: SharedTimedMutex
提供: cppreference.com
SharedTimedMutex 要件は共有ロック所有権モードを含むように TimedMutex 要件を拡張します。
要件
さらに、 SharedTimedMutex 型のオブジェクト m はタイムアウト付き共有操作をサポートします。
- 式
m.try_lock_shared_for(duration)は以下の性質を持ちます。
- アトミック操作として動作します。
durationによって指定された時間、ミューテックスの共有所有権の取得を試みます。durationがduration.zero()より小さいまたは等しい場合は、 (try_lock()によって行われたかのように) 待機せずに所有権の取得を試みます。 そうでなければ、この操作はミューテックスが取得されるかdurationによって指定された時間が経過するまでブロックします。 成功した場合に限りduration以内に戻りますが、たとえduration中のいずれかの時点において他のスレッドに所有されていないことがあったとしてもミューテックスの取得に失敗することが許されています。 いずれの場合においても、ミューテックスが取得された場合はtrue、そうでなければfalseを返します。try_lock_shared_for(duration)が成功した場合、同じオブジェクトに対する以前のunlock()操作はこの操作に対して同期します (解放-取得の std::memory_order と同等です)。- 呼び出し元スレッドがすでにそのミューテックスをいずれかのモードで所有している場合、動作は未定義です。
- 例外が投げられた場合、共有ロックは取得されません。
- 式
m.try_lock_shared_until(time_point)は以下の性質を持ちます。
- アトミック操作として動作します。
time_pointまでの残り時間の間、ミューテックスの共有所有権の取得を試みます。time_pointがすでに過ぎている場合は、 (try_lock()によって行われたかのように) ブロックせずに所有権の取得を試みます。 そうでなければ、この関数はミューテックスが取得されるかtime_pointによって指定された時間が経過するまでブロックします。 成功した場合に限りtime_pointより前に戻りますが、たとえtime_pointより前のいずれかの時点において他のスレッドに所有されていないことがあったとしてもミューテックスの取得に失敗することが許されています。 いずれの場合においても、ミューテックスが取得された場合はtrue、そうでなければfalseを返します。try_lock_shared_until(time_point)が成功した場合、同じオブジェクトに対する以前のunlock()操作はこの操作に対して同期します (解放-取得の std::memory_order と同等です)。- 呼び出し元スレッドがすでにそのミューテックスをいずれかのモードで所有している場合、動作は未定義です。
- 例外が投げられた場合、共有ロックは取得されません。
ライブラリの型
以下の標準ライブラリの型は SharedTimedMutex を満たします。
- std::shared_timed_mutex