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