मैं http://gcc.gnu.org/onbuildocs/libstdc++/manual/sared_ptr.html पढ़ रहा हूं और कुछ थ्रेड सुरक्षा मुद्दे अभी भी मेरे लिए स्पष्ट नहीं हैं:
- मानक गारंटी देता है कि संदर्भ गिनती धागा सुरक्षित है और यह प्लेटफ़ॉर्म स्वतंत्र है, है ना?
- इसी तरह का मुद्दा - मानक गारंटी देता है कि केवल एक धागा (पिछले संदर्भ को पकड़े हुए) साझा वस्तु पर कॉल हटाएगा, है ना?
- share_ptr इसमें संग्रहीत वस्तु के लिए किसी भी थ्रेड सुरक्षा की गारंटी नहीं देता है?
संपादित करें:
छद्म कोड:
// Thread I
shared_ptr<A> a (new A (1));
// Thread II
shared_ptr<A> b (a);
// Thread III
shared_ptr<A> c (a);
// Thread IV
shared_ptr<A> d (a);
d.reset (new A (10));
थ्रेड IV में रीसेट () कॉल करने से पहले थ्रेड में बनाई गई A क्लास की पिछली आवृत्ति को हटा देगा और इसे नए इंस्टेंस के साथ बदल देगा? इसके अलावा IV थ्रेड में रीसेट () कॉल करने के बाद अन्य थ्रेड्स केवल नव निर्मित ऑब्जेक्ट देखेंगे?
make_shared
बजाय का उपयोग करना चाहिएnew