हां, x86 और x86-64 पर, जब तक आप जो मूल्य पढ़ रहे हैं उसे ठीक से गठबंधन किया गया है। 32-बिट int
एस, पढ़ने या लिखने के दौरान atomic तक पहुंच के लिए उन्हें 4-बाइट सीमा पर गठबंधन करने की आवश्यकता है, जो लगभग हमेशा तब तक मामला नहीं होगा जब तक आप अनलिखित int
एस (कहने के लिए अपने रास्ते से बाहर नहीं जाते , एक पैक संरचना का उपयोग करके या बाइट बफर के साथ कास्टिंग/पॉइंटर अंकगणित करके)।
आप शायद अपने चर को volatile
के रूप में घोषित करना चाहते हैं ताकि संकलक कोड उत्पन्न करेगा जो हर बार एक्सेस होने पर मेमोरी से चर को फिर से लाएगा। इससे ऑप्टिमाइज़ेशन करने से रोका जा सकता है जैसे कि इसे किसी रजिस्टर में कैशिंग करना, जब इसे किसी अन्य थ्रेड द्वारा बदला जा सकता है।
स्रोत
2011-09-28 17:15:05
संभावित डुप्लिकेट [सी ++ पढ़ता है और एक परमाणु के लेखन] [http://stackoverflow.com/questions/54188/ए-सी-रीड-एंड-राइट-ऑफ-इंट-एटॉमिक) – Sjoerd