在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
}

09-26 11:21