std::recursive_mutex::try_lock
来自 cppreference.cn
< 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 << "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
[编辑] 参阅
锁定互斥体,如果互斥体不可用则阻塞 (public member function) | |
解锁互斥体 (public member function) | |
C documentation for mtx_trylock
|