Namespaces
Variants

std::shared_timed_mutex:: try_lock_shared_until

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
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() と同様に振る舞います。

Clock Clock 要件を満たさなければならない。 std:: chrono :: is_clock_v < Clock > false の場合、プログラムは不適格である。 (C++20以降)

標準では、 timeout_time に関連付けられたクロックを使用することが推奨されており、その場合、クロックの調整が考慮される可能性があります。したがって、ブロックの期間は、調整の方向性と実装がそれを尊重するかどうかに応じて、呼び出し時点での timeout_time - Clock :: now ( ) よりも長くなることも短くなることもあります。また、この関数は、プロセススケジューリングやリソース競合による遅延のため、 timeout_time が経過するまでブロックする可能性があります。

try_lock_shared() と同様に、この関数は偽の失敗を許容され、 false を返すことがあります。これは、 timeout_time 前のある時点でミューテックスが他のスレッドによってロックされていなかった場合でも発生する可能性があります。

同じミューテックスに対する前回の unlock() 操作は、この操作が true を返す場合、 synchronizes-with std::memory_order で定義される通り)します。

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

目次

パラメータ

timeout_time - ブロックする最大時間ポイント

戻り値

true 共有ロックの所有権が正常に取得された場合、それ以外の場合は false を返します。

例外

クロック、time_point、またはdurationの実行中にスローされる例外(標準ライブラリで提供されるクロック、時間点、および期間は例外をスローしない)。

関連項目

ミューテックスのロックを試み、指定された時間ポイントに達するまで
ミューテックスが利用できない場合は返る
(公開メンバ関数)
共有所有権のためにミューテックスのロックを試み、ミューテックスが
利用できない場合は返る
(公開メンバ関数)
共有所有権のためにミューテックスのロックを試み、指定されたタイムアウト時間
ミューテックスが利用できない場合は返る
(公開メンバ関数)