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 中所定义)此操作同步。请注意,如果先前 lock() 返回 false,则不会与此操作同步。
内容 |
[编辑] 参数
(无)
[编辑] 返回值
如果成功获取锁,则返回 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 文档 for mtx_trylock
|