Han*_* S. 20 c++ multithreading locking thread-safety boost-thread
我有一个关于使用boost::lock_guard(或类似的作用域锁)和使用应该由return语句中的锁保护的变量的问题.
如何破坏本地对象并复制返回值?返回值优化如何影响这一点?
例:
Data Class::GetData()
{
boost::lock_guard<boost::mutex> lock(this->mMutex);
return this->mData;
}
Run Code Online (Sandbox Code Playgroud)
这是正确的(如果mData是受mMutex保护的变量)吗?或者我是否必须使用本地范围和临时,如下例所示:
Data Class::GetData()
{
Data ret;
{
boost::lock_guard<boost::mutex> lock(this->mMutex);
ret = this->mData;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3352 次 |
| 最近记录: |