std::unique_lock<Mutex>:: try_lock_for
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
unique_lock::try_lock_for
|
||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
template
<
class
Rep,
class
Period
>
bool try_lock_for ( const std:: chrono :: duration < Rep, Period > & timeout_duration ) ; |
(C++11 起) | |
尝试锁定(即获取所有权)关联的互斥锁。阻塞直到指定的 timeout_duration 时间耗尽或成功获取锁,以先发生者为准。成功获取锁时返回 true ,否则返回 false 。实际调用 mutex ( ) - > try_lock_for ( timeout_duration ) 。
该函数可能因调度或资源竞争延迟而阻塞超过 timeout_duration 时长。
标准建议使用稳定时钟来测量持续时间。如果实现使用系统时钟替代,等待时间也可能对时钟调整敏感。
std::system_error 在以下情况会被抛出:若不存在关联的互斥量,或该互斥量已被此 std::unique_lock 锁定。
目录 |
参数
| timeout_duration | - | 阻塞等待的最长持续时间 |
返回值
true 表示已成功获取互斥锁的所有权, false 表示获取失败。
异常
- 由 mutex ( ) - > try_lock_for ( timeout_duration ) 抛出的任何异常。
- 如果没有关联的互斥锁,将抛出 std::system_error ,其错误代码为 std::errc::operation_not_permitted 。
- 如果互斥锁已被锁定,将抛出 std::system_error 异常,其错误代码为 std::errc::resource_deadlock_would_occur 。
示例
|
本节内容不完整
原因:缺少示例 |
参见
|
锁定(即获取所有权)关联的互斥量
(公开成员函数) |
|
|
尝试非阻塞地锁定(即获取所有权)关联的互斥量
(公开成员函数) |
|
|
尝试在指定时长内锁定关联的互斥量
(
std::shared_lock<Mutex>
的公开成员函数)
|
|
|
尝试锁定(即获取所有权)关联的
TimedLockable
互斥量,若互斥量不可用则持续尝试直至到达指定时间点
(公开成员函数) |
|
|
解锁(即释放所有权)关联的互斥量
(公开成员函数) |