मैं एक छवि साझा करने का प्रयास कर रहा हूं, जिसका उपयोग केवल धागे में ही पढ़ा जा रहा है। आमतौर पर मैं बूस्ट :: shared_ptrs के साथ इस तरह की चीज करता हूं लेकिन चूंकि सीवी :: मैट पहले से ही एक संदर्भ गिनती कंटेनर है, मैं इसे उसी तरीके से उपयोग करने का प्रयास कर रहा हूं, यह मानते हुए कि यह थ्रेड सुरक्षा के संदर्भों के आधार पर थ्रेड सुरक्षित है संदर्भ में यहां गिनती:सीवी :: मैट थ्रेड-सुरक्षित (परमाणु असाइनमेंट + refcounting) है?
हालांकि मैं गए होने समस्याएं यह संकेत दे संभवतः हो सकता है कि यह है कि वे वास्तव में कर रहे हैं सुरक्षित थ्रेड नहीं होने दिया; वह असाइनमेंट गैर-परमाणु है। कभी-कभी मुझे संदर्भ गणना वृद्धि के अंदर एक सीजी-गलती मिल जाएगी जिसका अर्थ है कि मूल वस्तु पहले से ही नष्ट हो चुकी है।
तो विशिष्ट सवाल यह है:
- सीवी :: चटाई काम परमाणु है?
यह परमाणु प्रतीत नहीं होता है। 'If' सच हो सकता है, एक संदर्भ स्विच हो सकता है, एक रिलीज, और नष्ट हो सकता है, और फिर संदर्भ स्विच वापस और सीवी_एक्सएडीडी segfault होगा, जब तक कि मैं कुछ याद नहीं कर रहा हूँ। – Catskul
सीवी_एक्सएडीडी एक परमाणु परीक्षण-और-सेट है (इसलिए, यह जोड़ने से पहले रीफॉउंट के लिए परीक्षण करता है)। परमाणु सेशन स्थिति में प्रवेश करने से पहले पहला भाग (यदि refcount) एक तेज परीक्षण के लिए है। – Sam
इसके अलावा, जैसा कि मुझे पता है, यह कोड Google पर लोगों द्वारा जारी किया गया है।मुझे नहीं लगता कि वे ऐसी गलती करेंगे। – Sam