std::recursive_mutex:: try_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Locking | ||||
|
recursive_mutex::try_lock
|
||||
| Native handle | ||||
|
bool
try_lock
(
)
noexcept
;
|
(自 C++11 起) | |
尝试锁定互斥量。立即返回。成功获取锁时返回 true ,否则返回 false 。
此函数允许伪失败,即使互斥锁当前未被任何其他线程锁定,也可能返回 false 。
线程可以重复地对递归互斥锁调用
try_lock
。成功调用
try_lock
会增加所有权计数:只有当线程进行对应次数的
unlock
调用后,互斥锁才会被释放。
所有权的最大层级数未作规定。若超出此层级数,调用
try_lock
将返回
false
。
同一互斥量上先前的 unlock() 操作与此操作形成 同步关系 (定义参见 std::memory_order ),若本操作返回 true 。请注意,若本操作返回 false ,则先前的 lock() 操作不与此操作形成同步关系。
目录 |
参数
(无)
返回值
true 表示锁获取成功,否则为 false 。
异常
不抛出任何异常。
示例
#include <iostream> #include <mutex> int main() { std::recursive_mutex test; if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.lock(); // non-recursive mutex would return false from try_lock now if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else std::cout << "lock not acquired\n"; test.unlock(); }
输出:
lock acquired lock acquired
参见
|
锁定互斥锁,若互斥锁不可用则阻塞
(公开成员函数) |
|
|
解锁互斥锁
(公开成员函数) |
|
|
C 文档
关于
mtx_trylock
|
|