名前空間
変種
操作

名前付き要件: TimedMutex

提供: cppreference.com
< cpp‎ | named req
 
 
名前付き要件
基本
レイアウト
ライブラリ全体
コンテナ
コンテナの要素
イテレータ
ストリーム入出力
乱数
並行処理
(C++11)

(C++11)
TimedMutex
(C++11)
その他
 

TimedMutex 要件はスレッド間の同期を含むように TimedLockable 要件を拡張します。

[編集] 要件

さらに、 TimedMutex 型のオブジェクト m について、

  • m.try_lock_for(duration) が以下の性質を持ちます。
  • アトミック操作として動作します。
  • duration によって指定された時間、ミューテックスの排他所有権の取得を試みます。 durationduration.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 を満たします。

[編集] 関連項目