为什么在使用try_lock()时需要进行显式比较?

时间:2013-04-05 16:38:37

标签: c++ c++11 mutex

我正在阅读std::mutex::try_lock的文档,并且上面有这个例子:

#include <iostream>
#include <mutex>

int main()
{
    std::mutex test;
    if (test.try_lock() == true)
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.unlock();  // now unlock the mutex
    test.lock();    // to lock it again
    if (test.try_lock())  // true can be left out
        std::cout << "lock acquired" << std::endl;
    else
        std::cout << "lock not acquired" << std::endl;
    test.lock(); // and now the finale (a block)
}

在第二个if语句中,他说真的可以被排除在外。为什么这是第二个,而不是第一个。我查了一下,它说try_lock返回一个布尔值,那么它怎么能不是true或false,从而使== true检查变得多余了?

1 个答案:

答案 0 :(得分:6)

x == true类型为x时,

bool很愚蠢。 test.try_lock()会返回bool,因此在两个情况下都不需要进行测试。