名前空間
変種
操作

std::shared_timed_mutex::try_lock_shared_until

提供: cppreference.com
 
 
スレッドサポートライブラリ
スレッド
(C++11)
(C++20)
(C++20)
this_thread 名前空間
(C++11)
(C++11)
(C++11)
相互排他
(C++11)
汎用ロック管理
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
条件変数
(C++11)
セマフォ
ラッチとバリア
(C++20)
(C++20)
フューチャー
(C++11)
(C++11)
(C++11)
(C++11)
 
 
template< class Clock, class Duration >
bool try_lock_shared_until( const std::chrono::time_point<Clock,Duration>& timeout_time );
(C++14以上)

ミューテックスの共有モードでのロックを試みます。 指定された timeout_time に達するか、ロックを取得するか、どちらかが先に発生するまでブロックします。 ロックの取得に成功した場合は true を返し、そうでなければ false を返します。

timeout_time がすでに過ぎていれば、この関数は try_lock_shared() のように動作します。

timeout_time に紐付く時計が使用されます。 つまり、その時計の調節の影響を受けます。 そのため、ブロックする最大時間は、調節の方向によって、呼び出したときの timeout_time - Clock::now() より、短くなったり長くなったりする場合があります。 また、スケジューリングやリソースの奪い合いによる遅延のため、この関数は timeout_time に達するまでよりも長くブロックする可能性もあります。

try_lock_shared() と同様に、この関数は timeout_time より前のどこかの時点でミューテックスが他のいかなるスレッドにもロックされていなかったことがあっても、 spurious に失敗して false を返すことが認められています。

true を返した場合、同じミューテックスに対する以前の unlock() 操作は、この操作に対して同期します (std::memory_order を参照してください)。

いずれかのモード (共有または排他) でその mutex をすでに所有しているスレッドによって try_lock_shared_until が呼ばれた場合、動作は未定義です。

目次

[編集] 引数

timeout_time - ブロックする最大時点

[編集] 戻り値

共有ロックの取得に成功した場合は true、そうでなければ false

[編集] 例外

実行中に clock、time_point、または duration によって投げられるあらゆる例外 (標準ライブラリによって提供される clock、time_point、および duration は、例外を投げることはありません)。

[編集]

[編集] 関連項目

ミューテックスのロックを試みます。 指定された時刻に達するまでミューテックスが利用可能にならなければリターンします
(パブリックメンバ関数) [edit]
共有所有権のためにミューテックスのロックを試みます。 利用可能でない場合はリターンします
(パブリックメンバ関数) [edit]
共有所有権のためにミューテックスのロックを試みます。 指定されたタイムアウト時間の間ミューテックスが利用可能にならなければリターンします
(パブリックメンバ関数) [edit]