考虑这个简单的代码:
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 具有独占权时,我才需要执行异步操作。所以:
- 为什么当我拥有该互斥锁时 try_lock 返回 false?
- 如何创建仅由拥有锁的线程执行的代码块?