我正在阅读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
检查变得多余了?
答案 0 :(得分:6)
x == true
类型为x
时, bool
很愚蠢。 test.try_lock()
会返回bool
,因此在两个情况下都不需要进行测试。