使用 std::lock 来保护 return 语句?

Use std::lock to protect return statement?

据我了解,std::lock 将部分锁定在其范围内。但是,如果在 return 语句中执行对变量的访问怎么办?示例:

// Looks safe...
bool foo
{
    std::lock_guard<decltype(myMutex)> tLock(myMutex);
    if (bar == 123)
    {
        return true;
    }
    else
    {
        return false;
    }
}

// Is it safe?
bool foo
{
    std::lock_guard<decltype(myMutex)> tLock(myMutex);
    return bar == 123;
}

return

之后调用析构函数

所以你在这两种情况下都很好。