考虑这个简单的代码:
boost::mutex m;
m.lock();
bool locked = m.try_lock();
std::cout<< (!locked? "Can't use lock" : "Can use lock.")<<std::endl;
system("pause");
代码打印Can't use lock
。这是一个问题,因为在我的程序中,只有当线程拥有锁的专有权时,我才需要执行异步操作。所以:
答案 0 :(得分:-1)
你的代码设计很糟糕。任何使用递归互斥锁的尝试都表明存在设计错误。在您的代码中,您需要保护所需的资源,如果您的线程当前拥有资源,则无关紧要。