1

我正在阅读的文档,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 语句中,他说 true 可以省略。为什么第二个会这样,而第一个不会。我检查了一下,它说try_lock返回一个布尔值,那么它怎么可能不是真假,从而使== true检查变得多余?

4

1 回答 1

6

x == truex有类型时很傻booltest.try_lock()return bool,因此在这两种情况下都不需要测试。

于 2013-04-05T16:46:44.310 回答