根据标题,如何try_lock在boost :: unique_lock?如何try_lock在boost :: unique_lock <boost :: mutex>
我有这样的代码:
void mySafeFunct()
{
if(myMutex.try_lock() == false)
{
return -1;
}
// mutex ownership is automatically acquired
// do stuff safely
myMutex.unlock();
}
现在,我想用一个unique_lock(这也是一个范围的互斥体),而不是普通的boost ::互斥。我想要避免函数体中的所有unlock()调用。
您是否在寻找[作用域锁(http://www.boost.org/doc/libs/1_52_0/doc/html/interprocess/synchronization_mechanisms的.html#interprocess.synchronization_mechanisms.mutexes.mutexes_scoped_lock)? –
我想在我的互斥锁上使用unique_lock,就像unique_lock myUniqueLock(myMutex);并调用try_lock而不是获取构造函数上的锁(如unique_lock所做的那样) –
如果您阅读['unique_lock'析构函数参考](http://www.boost.org/doc),这应该不成问题/libs/1_52_0/doc/html/thread/synchronization.html#thread.synchronization.locks.unique_lock.destructor),你会看到它解锁,因此可以用作范围锁。 –