तकनीकी कारण: अधिकांश परमाणु प्रकार लॉक-फ्री होने की गारंटी नहीं देते हैं। परमाणु प्रकार के प्रतिनिधित्व में एम्बेडेड म्यूटेक्स और म्यूटेक्स शामिल होने की आवश्यकता हो सकती है।
तार्किक कारण: परमाणु प्रकार की प्रतिलिपि बनाने का क्या अर्थ होगा? क्या संपूर्ण प्रतिलिपि ऑपरेशन परमाणु होने की उम्मीद की जाएगी? क्या प्रतिलिपि और मूल समान परमाणु वस्तु का प्रतिनिधित्व करेंगे?
दो अलग-अलग परमाणु वस्तुओं को फैलाने वाले ऑपरेशन के लिए कोई अच्छी तरह से परिभाषित अर्थ नहीं है जो यह सार्थक बना देगा। एक चीज जो आप कर सकते हैं वह एक परमाणु वस्तु से दूसरे में लोड किए गए मान को स्थानांतरित कर देती है। लेकिन लोड केवल पूर्व ऑब्जेक्ट पर अन्य परिचालनों के साथ सिंक्रनाइज़ करता है, जबकि स्टोर गंतव्य ऑब्जेक्ट पर संचालन के साथ सिंक्रनाइज़ करता है। और प्रत्येक भाग पूरी तरह से स्वतंत्र स्मृति आदेश बाधाओं के साथ आ सकता है।
एक स्टोर के बाद लोड के रूप में इस तरह के एक ऑपरेशन को स्पेलिंग स्पष्ट करता है, जबकि एक असाइनमेंट एक आश्चर्यजनक छोड़ देगा कि यह भाग लेने वाली वस्तुओं के स्मृति पहुंच गुणों से कैसे संबंधित है। यदि आप जोर देते हैं, तो आप std::atomic<..>
के मौजूदा रूपांतरणों को जोड़कर एक समान प्रभाव प्राप्त कर सकते हैं (एक स्पष्ट कास्ट या मूल्य प्रकार के अन्य मध्यवर्ती की आवश्यकता होती है)।
।
+1, मुझे लगा कि यही कारण था, हालांकि मुझे जवाब पोस्ट करने के लिए पर्याप्त नहीं था। हो सकता है कि यह 'is_lock_free()' सदस्य फ़ंक्शन का उल्लेख करने लायक है, जो बताएगा कि एक कार्यान्वयन वास्तव में परमाणु निर्देशों पर निर्भर करता है –
मुझे लगता है कि आपने अभी इसका उल्लेख किया है :) धन्यवाद। जोर्जब भी एक अच्छा (दूसरा) कारण देता है, जिसे मैं शब्दों में नहीं डाल सका, इसलिए व्याख्या करने की कोशिश नहीं की –