मैं रेस स्थितियों को रोकने के लिए मल्टीथ्रेडिंग, सी ++, उचित सिंक्रनाइज़ेशन और ताले पर विभिन्न चीजें पढ़ रहा हूं। मेरे लिए एक प्रश्न का उत्तर नहीं दिया गया है, हालांकि: क्या कोई म्यूटेक्स आवश्यक है यदि मैं थ्रेड ए में ऑब्जेक्ट बनाता हूं, लेकिन इसे बाद में थ्रेड बी में विशेष रूप से उपयोग करता हूं?थ्रेड ए में ऑब्जेक्ट बनाएं, थ्रेड बी Mutex में उपयोग करें?
दूसरे शब्दों में, मुझे पता है कि मुझे दौड़ की स्थिति को रोकने के लिए एक म्यूटेक्स की आवश्यकता नहीं है - क्या मुझे मेमोरी बाधा (या अन्य संभावित समस्याओं) के रूप में सेवा करने के लिए एक म्यूटेक्स चाहिए?
एक बहुत ही बुनियादी उदाहरण कल्पना करने के लिए मैं
struct Object {
void do_stuff();
};
Object o;
std::thread worker_thread([&o](){
while (alive)
o.do_stuff();
}).join();
// `o` is never used outside worker_thread
मैं खुश हो सकता है अगर आप भी मुझे लेख की सिफारिश कर सकता है/किताबें, जहां मैं इस विषय और/या सही कीवर्ड्स में और अधिक पढ़ सकते हैं के लिए खोज करने के लिए मतलब है कि इस तरह के परिदृश्य।
यदि केवल एक धागा वस्तु का उपयोग कर रहा है, * और आप उस पर भरोसा कर सकते हैं, तो आपको कोई समस्या नहीं होनी चाहिए। – Basya