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::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
锁定互斥,若互斥不可用则阻塞 (公开成员函数) |
|
解锁互斥 (公开成员函数) |
|
mtx_trylock的 C 文档
|