मैंने वास्तव में दोनों तरीकों से दावों को सुना है। मुझे संदेह है कि वे नहीं हैं, लेकिन मैं विषय सुलझाना चाहता था।सी ++ में पॉइंटर असाइनमेंट परमाणु है?
उत्तर
सी ++ 03 थ्रेड के अस्तित्व के बारे में नहीं जानता है, इसलिए परमाणुता की अवधारणा सी ++ 03 के लिए ज्यादा समझ नहीं लेती है, जिसका अर्थ है कि यह इसके बारे में कुछ भी नहीं कहता है।
सी ++ 11 धागे के बारे में जानता है, लेकिन एक बार फिर पॉइंटर्स असाइन करने की परमाणुता के बारे में कुछ भी नहीं कहता है। हालांकि सी ++ 11 में std::atomic<T*>
है, जो परमाणु होने की गारंटी है।
ध्यान दें कि यहां तक कि यदि कच्चे सूचक को लिखना आपके मंच पर परमाणु है, तो संकलक अभी भी उस आकलन को स्थानांतरित करने के लिए स्वतंत्र है, जिससे वास्तव में आपको कुछ भी खरीद नहीं आता है।
आप एक सूचक जो धागे के बीच साझा किया जाता है करने के लिए लिखने के लिए की जरूरत है या तो std::atomic<T*>
(या अभी तक आधिकारिक नहीं boost::atomic<T*>
, परमाणु intrinsics या विंडोज़ Interlocked * gccs) का उपयोग करें या लपेट सभी mutexes में है कि सूचक को एक्सेस करता है।
आप यहां boost.atomic प्राप्त कर सकते हैं: http://www.chaoticmind.net/~hcb/projects/boost.atomic /doc/index.html –
सी ++ मानक विशिष्ट थ्रेडिंग व्यवहार को परिभाषित नहीं करता है। कंपाइलर और प्लेटफ़ॉर्म के आधार पर, सूचक असाइनमेंट परमाणु हो सकता है या नहीं भी हो सकता है।
सी ++ 11 * करता है * एक थ्रेडिंग व्यवहार और संबंधित मेमोरी मॉडल को परिभाषित करता है। –
@ फ़्रिज़लाब और जेएन। आप दोनों सही हैं। जैसा कि कह रहा है कि पोर्श एक स्पोर्ट कार एक सही लेकिन अपरिहार्य है, क्योंकि हर मॉडल एक स्पोर्ट कार नहीं है :) – mloskot
- 1. असाइनमेंट ऑपरेटर '=' परमाणु है?
- 2. पायथन वैरिएबल असाइनमेंट परमाणु है?
- 3. जावा असाइनमेंट मुद्दे - क्या यह परमाणु है?
- 4. आईफोन पर एक परमाणु ऑपरेशन एकल फ्लोट असाइनमेंट है?
- 5. क्या जावा पॉइंटर परमाणु लिखते हैं?
- 6. सीवी :: मैट थ्रेड-सुरक्षित (परमाणु असाइनमेंट + refcounting) है?
- 7. कार्य करने के लिए पॉइंटर असाइनमेंट
- 8. सी # में enums - असाइनमेंट
- 9. सी ++ वेक्टर पॉइंटर
- 10. सी ++/सीएलआई पॉइंटर से देशी सी ++ पॉइंटर
- 11. सी # में ओवरलोडिंग असाइनमेंट ऑपरेटर
- 12. सी # - पॉइंटर
- 13. सी ++ पॉइंटर
- 14. क्या लिखें परमाणु परमाणु है?
- 15. सी में सिंगलटन पॉइंटर क्या है?
- 16. एक फंक्शन में सी सूचक असाइनमेंट
- 17. संदर्भ असाइनमेंट और परमाणु परिचालन पढ़ रहे हैं?
- 18. परमाणु संचालन सी ++
- 19. सी # में परमाणु गुणों को पढ़ता है और लिखता है?
- 20. सी # प्रारंभकर्ता सशर्त असाइनमेंट
- 21. सी ++ ओवरलोडिंग असाइनमेंट ऑपरेटर
- 22. सी ++ टाइपकास्ट: शून्य पॉइंटर से क्लास पॉइंटर
- 23. संदर्भ असाइनमेंट परमाणु है तो इंटरलाक्ड क्यों है। एक्सचेंज (रेफ ऑब्जेक्ट, ऑब्जेक्ट) की आवश्यकता है?
- 24. सी और सी ++ में एक कॉन्स्ट पॉइंटर-टू-पॉइंटर का क्या अर्थ है?
- 25. fwrite परमाणु है?
- 26. सी ++ पासिंग पॉइंटर टू फंक्शन (हाउटो) + सी ++ पॉइंटर मैनिपुलेशन
- 27. सी #: क्या यह फ़ील्ड असाइनमेंट सुरक्षित है?
- 28. सी ++: सदस्यवार असाइनमेंट कैसे काम करता है?
- 29. सी # मूल बातें बनाना परमाणु
- 30. सी ++ स्मार्ट पॉइंटर प्रदर्शन
यह भी देखें http://stackoverflow.com/questions/54188/are-c-reads-and-writes-of-an-int-atomic – sth
सी ++ को 'परमाणु' की आवश्यकता नहीं होगी यदि वह मामला था :) –