यह एक दो भाग का सवाल है, सभी की परमाणुता के बारे में std::shared_ptr
:
1.
जहाँ तक मैं बता सकता हूँ, उस परमाणु std::shared_ptr
में एकमात्र स्मार्ट पॉइंटर है <memory>
। मैं सोच रहा था कि क्या कोई गैर-परमाणु संस्करण std::shared_ptr
उपलब्ध है (मैं इसमें कुछ भी नहीं देख सकता <memory>
, इसलिए मैं मानक के बाहर के सुझावों के लिए भी खुला हूं, जैसे कि बूस्ट में)। मुझे पता boost::shared_ptr
है कि परमाणु भी है (यदि BOOST_SP_DISABLE_THREADS
परिभाषित नहीं है), लेकिन हो सकता है कि कोई दूसरा विकल्प हो? मैं ऐसी चीज की तलाश कर रहा हूं std::shared_ptr
, जिसमें वैसा ही शब्दार्थ हो , लेकिन बिना परमाणु के।
2. मैं समझता हूं कि std::shared_ptr
परमाणु क्यों है; यह बहुत अच्छा है हालांकि, यह हर स्थिति के लिए अच्छा नहीं है, और C ++ ने ऐतिहासिक रूप से "केवल आपके उपयोग के लिए भुगतान करें" का मंत्र दिया है। यदि मैं कई थ्रेड्स का उपयोग नहीं कर रहा हूं, या यदि मैं कई थ्रेड्स का उपयोग कर रहा हूं, लेकिन थ्रेड्स में सूचक स्वामित्व साझा नहीं कर रहा हूं, तो एक परमाणु स्मार्ट पॉइंटर ओवरकिल है। मेरा दूसरा सवाल यह है कि std::shared_ptr
C ++ 11 में प्रदान किया गया गैर-परमाणु संस्करण क्यों नहीं था ? (यह मानते हुए कि एक क्यों है ) (यदि उत्तर "बस एक गैर-परमाणु संस्करण है तो कभी नहीं माना गया" या "किसी ने कभी भी गैर-परमाणु संस्करण के लिए नहीं पूछा" यह ठीक है!)।
प्रश्न # 2 के साथ, मैं सोच रहा हूं कि क्या किसी ने कभी shared_ptr
(या तो बूस्ट या मानक समिति के लिए) का गैर-परमाणु संस्करण प्रस्तावित किया ( परमाणु संस्करण को प्रतिस्थापित करने के लिए नहीं shared_ptr
, लेकिन इसके साथ सह-अस्तित्व के लिए) और इसे एक के लिए गोली मार दी गई थी विशिष्ट कारण