1

考虑这个简单的代码:

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. 这是一个问题,因为在我的程序中,只有当线程对 lock 具有独占权时,我才需要执行异步操作。所以:

  1. 为什么当我拥有该互斥锁时 try_lock 返回 false?
  2. 如何创建仅由拥有锁的线程执行的代码块?
4

1 回答 1

-1

你的代码设计得很糟糕。任何使用递归互斥锁的尝试都表明存在设计错误。在您的代码中,您需要保护您需要的资源,并且您的线程当前是否拥有资源对您来说并不重要。

于 2015-11-04T16:57:44.387 回答