मेरे पास 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;
}