std::recursive_mutex::try_lock
来自cppreference.com
< cpp | thread | recursive mutex
bool try_lock(); |
(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()==true) { std::cout << "lock acquired" << std::endl; test.unlock(); // 现在锁定互斥 } else { std::cout << "lock not acquired" << std::endl; } test.lock(); // 再锁定它 if (test.try_lock()) { // 可留下 true std::cout << "lock acquired" << std::endl; } else { std::cout << "lock not acquired" << std::endl; } test.unlock(); }
输出:
lock acquired lock not acquired
参阅
锁定互斥,若互斥不可用则阻塞 (公开成员函数) | |
解锁互斥 (公开成员函数) |