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