使用 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
、
之后调用析构函数
所以你在这两种情况下都很好。
据我了解,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
、
所以你在这两种情况下都很好。