std::shared_timed_mutex::try_lock_shared_for
| template< class Rep, class Period > bool try_lock_shared_for( const std::chrono::duration<Rep,Period>& timeout_duration ); |
(C++14以降) | |
ミューテックスを共有モードでロックしようとします。指定された timeout_duration が経過するか、共有ロックが取得されるまでブロックします。どちらが先に発生するかによります。ロックが正常に取得された場合は true を返しますが、そうでない場合は false を返します。
timeout_duration が timeout_duration.zero() 以下の場合、この関数は try_lock_shared() と同様に動作します。
スケジューリング遅延やリソース競合遅延のため、この関数は timeout_duration よりも長くブロックする可能性があります。
標準では、期間の測定に安定したクロックを使用することが推奨されています。実装が代わりにシステムクロックを使用する場合、待機時間もクロック調整の影響を受ける可能性があります。
try_lock_shared() と同様に、この関数は偽陽性で失敗し、timeout_duration の間にミューテックスが他のどのスレッドにもロックされていなかったとしても false を返すことが許可されています。
同じミューテックスに対する先行する unlock() 操作は、true を返す場合、この操作と(std::memory_order で定義される)*同期*します。
try_lock_shared_for が、既にいずれかのモード(共有または排他)で mutex を所有しているスレッドによって呼び出された場合、その動作は未定義です。
目次 |
[編集] パラメータ
| timeout_duration | - | 待機する最大期間 |
[編集] 戻り値
ロックが正常に取得された場合は true、それ以外の場合は false。
[編集] 例外
実行中にクロック、time_point、または duration によってスローされる可能性のある例外(標準ライブラリで提供されるクロック、time_point、および duration は決して例外をスローしません)。
[編集] 例
| このセクションは未完成です 理由: 例がありません |
[編集] 関連情報
| 共有所有権のためにミューテックスをロックしようとします。ミューテックスが利用できない場合は戻ります (public メンバ関数) | |
| 共有所有権のためにミューテックスをロックしようとします。ミューテックスが 指定された時刻まで利用できなかった場合は戻ります (public member function) | |
| ミューテックスをロックしようとします。ミューテックスが 指定されたタイムアウト期間利用できなかった場合は戻ります (public メンバ関数) |