std::recursive_mutex::try_lock
来自cppreference.com
< cpp | thread | recursive mutex
bool try_lock()noexcept; | (C++11 起) | |
尝试锁定互斥体。立即返回。成功获得锁时返回 true,否则返回 false。
允许此函数虚假地失败而返回 false,即使互斥体当前未被任何其他线程锁定。
线程可以重复调用 try_lock
。对 try_lock
的成功调用增加所有权计数:线程调用 unlock 匹配次数后互斥体才会得到释放。
所有权层数的最大值是未指定的。若超出此数,则到 try_lock
的调用将返回 false。
若此操作返回 true,则同一互斥体上的先前 unlock() 操作同步于(定义于 std::memory_order)它。注意若此操作返回 false,则先前的 lock() 不与之同步。
目录 |
[编辑]参数
(无)
[编辑]返回值
若成功取得锁则为 true,否则为 false。
[编辑]异常
不抛出。
[编辑]示例
运行此代码
#include <iostream>#include <mutex> int main(){std::recursive_mutex test;if(test.try_lock()){std::cout<<"已获得锁\n"; test.unlock();}elsestd::cout<<"未获得锁\n"; test.lock();// 现在非递归互斥将从 try_lock 返回 falseif(test.try_lock()){std::cout<<"已获得锁\n"; test.unlock();}elsestd::cout<<"未获得锁\n";}
输出:
已获得锁 已获得锁
[编辑]参阅
锁定互斥体,若互斥体不可用则阻塞 (公开成员函数) | |
解锁互斥体 (公开成员函数) | |
mtx_trylock 的 C 文档 |