std::timed_mutex:: try_lock_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
timed_mutex::try_lock_until
|
||||
| Native handle | ||||
|
template
<
class
Clock,
class
Duration
>
bool try_lock_until ( const std:: chrono :: time_point < Clock, Duration > & timeout_time ) ; |
(C++11以降) | |
ミューテックスのロックを試みます。指定された 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++規格に対して遡及的に適用されました。
| DR | 適用対象 | 公開時の動作 | 正しい動作 |
|---|---|---|---|
| LWG 2093 | C++11 |
try_lock_until
は例外を送出しなかった
|
タイムアウト関連の例外を送出する |
関連項目
|
ミューテックスをロックする。利用できない場合はブロックする
(公開メンバ関数) |
|
|
ミューテックスのロックを試みる。利用できない場合は即時返却する
(公開メンバ関数) |
|
|
ミューテックスのロックを試みる。指定されたタイムアウト期間
ミューテックスが利用できない場合は返却する (公開メンバ関数) |
|
|
ミューテックスをアンロックする
(公開メンバ関数) |
|
|
Cドキュメント
for
mtx_timedlock
|
|