std::recursive_mutex::try_lock

来自cppreference.com
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_trylockC 文档