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 << "lock acquired\n"; test.unlock(); } else { std::cout << "lock not acquired\n"; } // 现在非递归互斥将从 try_lock 返回 false if (test.try_lock()) { std::cout << "lock acquired\n"; test.unlock(); } else { std::cout << "lock not acquired\n"; } }
输出:
lock acquired lock acquired
参阅
锁定互斥,若互斥不可用则阻塞 (公开成员函数) | |
解锁互斥 (公开成员函数) |