在C++中,使用锁时,lock_guard
允许您符合RAII要求。构造lock()
时会调用lock_guard
,一旦超出范围则会销毁unlock()
。
是否有可能加强lock_guard
的范围,使其早日销毁,以避免将锁保持超过必要的时间?
最佳答案
我不确定您的意思是什么,但您可以为带有大括号的std::lock_guard
引入一个块范围,如下所示:
void foo()
{
// do uncritical stuff
{
// critical part starts here with construction
std::lock_guard<std::mutex> myLock(someMutex);
// do critical stuff
} // critical parts end here with myLock going out of scope
// do uncritical stuff
}