Namespaces
Variants

std::shared_timed_mutex:: try_lock_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_until ( const std:: chrono :: time_point < Clock, Duration > & timeout_time ) ;
(C++14以降)

ミューテックスのロックを試みます。指定された timeout_time に達する(タイムアウト)か、ロックが取得される(ミューテックスを所有する)かのいずれか早い方までブロックします。ロックの取得に成功した場合は true を返し、それ以外の場合は false を返します。

timeout_time が既に経過している場合、この関数は try_lock() と同様に動作します。

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

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

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

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

スレッドが既にミューテックスを何らかのモード(共有または排他)で所有している状態で try_lock_until が呼び出された場合、動作は未定義です。

目次

パラメータ

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

戻り値

true ロックの取得に成功した場合、それ以外の場合は false

例外

timeout_time によってスローされる例外(標準ライブラリで提供されるクロック、時間点、期間は例外をスローしない)。

関連項目

ミューテックスをロックする。利用できない場合はブロックする
(公開メンバ関数)
ミューテックスのロックを試みる。利用できない場合は即座に返る
(公開メンバ関数)
ミューテックスのロックを試みる。指定されたタイムアウト期間
ミューテックスが利用できない場合は返る
(公開メンバ関数)
ミューテックスをアンロックする
(公開メンバ関数)
Cドキュメント for mtx_timedlock