std::shared_timed_mutex:: try_lock_until
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Exclusive locking | ||||
|
shared_timed_mutex::try_lock_until
|
||||
| Shared locking | ||||
|
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() 操作与此操作形成 同步关系 (定义参见 std::memory_order ),若本操作返回 true 。
如果已以任何模式(共享或独占)拥有互斥锁的线程调用
try_lock_until
,则行为未定义。
目录 |
参数
| timeout_time | - | 阻塞等待的最晚时间点 |
返回值
true 表示锁获取成功,否则为 false 。
异常
由 timeout_time 抛出的任何异常(标准库提供的时钟、时间点和持续时间从不抛出异常)。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
锁定互斥锁,若互斥锁不可用则阻塞
(公开成员函数) |
|
|
尝试锁定互斥锁,若互斥锁不可用则立即返回
(公开成员函数) |
|
|
尝试锁定互斥锁,若互斥锁在指定的超时时间内
持续不可用则返回 (公开成员函数) |
|
|
解锁互斥锁
(公开成员函数) |
|
|
C 文档
关于
mtx_timedlock
|
|