एक साधारण पढ़ने के लिए, यह ज्यादातर संरेखण के बारे में है। परमाणु पढ़ने को आश्वस्त करने का सबसे आसान तरीका हमेशा "प्राकृतिक" संरेखण का उपयोग करना है - यानी, संरेखण आइटम के आकार के रूप में कम से कम उतना ही बड़ा है (उदाहरण के लिए, 32-बिट आइटम 32-बिट गठबंधन है)।
गलत हस्ताक्षर पढ़ना जरूरी नहीं है परमाणु। एक चरम उदाहरण के लिए, एक विषम पते पर 32-बिट मान पढ़ने पर विचार करें जहां पहला बाइट एक कैश लाइन में है, और अन्य तीन बाइट एक और कैश लाइन में हैं। ऐसे मामले में, परमाणु पढ़ने अनिवार्य रूप से असंभव है।
चूंकि (कम से कम अधिकांश) प्रोसेसर 64-बिट चौड़ी मेमोरी बस का उपयोग करते हैं, सबसे बड़ी वस्तु जो परमाणु रूप से पढ़ने की उम्मीद कर सकती है 64 बिट्स है।
स्रोत
2010-07-28 04:39:49
मुझे लगता है कि आप सही हैं। यह समझ आता है। धन्यवाद। – IamIC
अगर यह आपकी मदद करता है तो उत्तर स्वीकार करना न भूलें;) –
हमेशा नहीं! यदि स्मृति पता कैश में है जो मल्टी सीपीयू इकाई में दूसरे सीपीयू का उपयोग करता है तो पढ़ने परमाणु होने की गारंटी नहीं है। तो "LOCK CMPXCHG EAX, [var]" का उपयोग करें जो पहली बाड़ मेमोरी कैश है। –