public member function
<mutex>

std::unique_lock::try_lock_until

template <class Clock, class Duration>  bool try_lock_until (const chrono::time_point<Clock,Duration>& abs_time);
在指定时间点前尝试锁定互斥量
调用所管理定时互斥量对象的成员函数 try_lock_until,并使用其返回值来设置所有权状态

如果调用前所有权状态已为 true,或对象当前未管理任何互斥量对象,则函数将抛出 system_error 异常。

参数

abs_time
线程停止阻塞的时间点,放弃获取锁。
time_point 是表示特定绝对时间的对象。

返回值

如果函数成功锁定所管理的定时互斥量对象,则返回 true
否则返回 false

数据竞争

访问/修改 unique_lock 对象。
作为原子操作访问/修改所管理的定时互斥量对象(不引起数据竞争)。

异常安全

基本保证:如果此成员函数抛出异常,则 unique_lock 对象仍处于有效状态。

如果调用失败,将抛出 system_error 异常。
异常类型错误条件描述
system_errorerrc::resource_deadlock_would_occurunique_lock 对象已拥有锁
system_errorerrc::operation_not_permittedunique_lock 对象当前未管理任何互斥量对象(因为它被默认构造移动释放)。
如果对所管理的定时互斥量对象try_lock_until 调用失败,或者库实现通过此类机制报告了任何其他条件,也会抛出异常。

另见