如果创建如下所示的unique_lock,我可以解锁它而不会破坏或超出范围吗?换句话说,这是安全/可接受的吗?
std::mutex queueMutex;
// My understanding is that this locks the mutex
std::unique_lock<std::mutex> lk(queueMutex);
{
// My critical section
}
// Is it unlocking it properly, or do I have to pop it from the stack?
lk.unlock();
THX!
答案 0 :(得分:0)
这是安全且可接受的,调用boost
会解锁互斥锁并让unlock()
忘记它,以便它不会在dtor中再次解锁。
话虽如此,在大多数情况下,范围界定是可取的,因为如果函数/范围很长并且unique_lock
在unlock
或其他条件结构中,那么读者可能很难遵循