इस https://www.cl.cam.ac.uk/~pes20/cpp/cpp0xmappings.html के अनुसार, एक जारी की दुकान MOV (स्मृति में) के रूप में कार्यान्वित किया जाता है।क्या एमओवी x86 निर्देश एक सी ++ 11 memory_order_release परमाणु स्टोर लागू करता है?
उसकी http://en.cppreference.com/w/cpp/atomic/memory_order
memory_order_release के अनुसार:
इस स्मृति आदेश के साथ एक दुकान कार्रवाई निष्पादित रिहाई आपरेशन: कोई स्मृति वर्तमान सूत्र में पहुँचता इस स्टोर के बाद पुनर्क्रमित जा सकता है। इससे यह सुनिश्चित होता है कि मौजूदा धागा में सभी राईट अन्य सूत्र है कि एक ही परमाणु उपभोग में दिखाई देने लगते हैं अन्य धागे कि अधिग्रहण या एक ही परमाणु चर और लिखते हैं कि परमाणु चर में एक निर्भरता ले में दिखाई दे रहे हैं।
मैं समझता हूँ कि जब memory_order_release प्रयोग किया जाता है, सभी स्मृति पहले किया भंडार इस एक से पहले खत्म करना चाहिए।
int a;
a = 10;
std::atomic<int> b;
b.store(50, std::memory_order_release); // i can be sure that 'a' is already 10, so processor can't reorder the stores to 'a' and 'b'
प्रश्न: कैसे यह है कि केवल MOV अनुदेश इस व्यवहार के लिए पर्याप्त है संभव है? एमओवी प्रोसेसर को पिछले सभी स्टोरों को खत्म करने के लिए कैसे कहता है?
आप "x86" – Cubbi
@ कब्बी का उल्लेख करना भूल गए: दाएं, यह महत्वपूर्ण है, – Krab
किया गया क्योंकि यह एक गतिशील अनुसूचित आईएसए है, चिप हमेशा सबसे खराब मामला मानता है। – user3528438