2012-03-22 21 views
7

अभिन्न प्रकार के लिए std :: परमाणु की पूर्ण विशेषज्ञता अंकगणितीय यौगिक असाइनमेंट ऑपरेटर जैसे +=, -= प्रदान करती है, लेकिन *= या /= नहीं है। मानक यह कहता है लेकिन जहां तक ​​मैं देख सकता हूं कि कोई कारण नहीं है। क्या परमाणु संचालन पुस्तकालय खंड के पीछे तर्क से परिचित कोई इस पर कुछ प्रकाश डाल सकता है?क्यों std :: atomic <integral> विशेषज्ञता गुणा और विभाजन असाइनमेंट ऑपरेटर प्रदान करते हैं?

उत्तर

9

मुझे लगता है कि यह हार्डवेयर से संबंधित है। कई प्लेटफॉर्म पर += को संभालने के लिए परमाणु हैं लेकिन मुझे *= प्रदान करने वाले किसी भी व्यक्ति के बारे में पता नहीं है। लॉकिंग के माध्यम से इसे कार्यान्वित करना आसान होगा, लेकिन std::atomic का इंटरफ़ेस उसी स्तर के संचालन में मिश्रण करेगा जो कि बहुत महंगी परिचालनों के साथ किसी भी तरह सस्ते है।

+0

यह मेरा संदेह था। मुझे लगता है कि यही कारण है कि थोड़ा सा और, OR और XOR ops लेकिन कुछ भी स्थानांतरित नहीं हो रहा है। – juanchopanza