std::recursive_mutex::try_lock

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 文档

版本历史

  • (当前 | 先前 2013年7月2日 (二) 11:34P12bot讨论 | 贡献 . . (403字节) (-1). . (Use {{lc}}. Update links. Various fixes.) (撤销)
  • 当前 | 先前 2012年11月2日 (五) 19:00P12bot讨论 | 贡献 . . (404字节) (+345). . (r2.7.3) (机器人添加:de, en, es, fr, it, ja, pt, ru) (撤销)
  • 当前 | 先前 2012年10月26日 (五) 03:32P12讨论 | 贡献 . . (59字节) (0). . (1个修订: Translate from the English version) (撤销)
  • 当前 | 先前) 2012年10月22日 (一) 14:48TranslationBot讨论 | 贡献. . (59字节) (+59). . (Translated from the English version using Google Translate)