boost::lock_guard
ステートメント内のロック(または同様のスコープロック)の使用と、ロックによって保護されるべき変数の使用について質問がありますreturn
。
ローカルオブジェクトを破棄して戻り値をコピーする順序はどうですか?戻り値の最適化はこれにどのように影響しますか?
例:
Data Class::GetData()
{
boost::lock_guard<boost::mutex> lock(this->mMutex);
return this->mData;
}
これは正しいでしょうか(mDataがmMutexによって保護されている変数である場合)?または、以下の例に示すように、ローカルスコープと一時的なスコープを使用する必要がありますか?
Data Class::GetData()
{
Data ret;
{
boost::lock_guard<boost::mutex> lock(this->mMutex);
ret = this->mData;
}
return ret;
}