使用 C++ lock_guard 时如何收紧范围?

stw*_*ykd 2 c++ mutex locking raii std

在 C++ 中,lock_guard允许您在使用锁时符合 RAII。它lock()在构造时调用lock_guardunlock()一旦超出范围就在销毁它时调用。

是否可以收紧范围lock_guard使其更快地销毁,以避免将锁保持超过必要的时间?

chu*_*ill 5

我不是 100% 确定你的意思,但你可以为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
}
Run Code Online (Sandbox Code Playgroud)