std::shared_timed_mutex::try_lock_until
来自cppreference.com
< cpp | thread | shared timed mutex
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 前的某个时间点此互斥量没有被任何其他线程锁定。
如果此操作返回 true,那么相同互斥量上先前的 unlock() 操作同步于(在 std::memory_order 定义)它。
如果已经以任何模式(共享或排他性)占有此互斥量的线程调用 try_lock_until
,那么行为未定义。
参数
timeout_time | - | 要阻塞到的最晚时间点 |
返回值
成功锁定时返回 true,否则返回 false。
异常
timeout_time 可能抛出的异常(标准库提供的时钟、时间点和时长决不抛出)
示例
本节未完成 原因:暂无示例 |
参阅
锁定互斥,若互斥不可用则阻塞 (公开成员函数) | |
尝试锁定互斥,若互斥不可用则返回 (公开成员函数) | |
尝试锁定互斥,若互斥在指定的时限时期中不可用则返回 (公开成员函数) | |
解锁互斥 (公开成员函数) |