2011-01-20 12 views
6

मुझे मल्टीथ्रेडिंग में रूचि है। क्षेत्र में बहुत सारे गॉथस हैं, उदाहरण के लिए, कोई गारंटी नहीं है कि पॉइंटर लिखने परमाणु हैं। मुझे यह मिल गया है, लेकिन यह जानना चाहेंगे कि वास्तव में यह मामला सबसे लोकप्रिय वर्तमान कॉन्फ़िगरेशन क्या है? उदाहरण के लिए, मेरे मैकबुक प्रो/जीसीसी पर, सूचक लिखते हैं कि निश्चित रूप से परमाणु प्रतीत होता है।सबसे आम कॉन्फ़िगरेशन क्या हैं जहां पॉइंटर लिखते हैं परमाणु नहीं हैं?

+2

यदि पॉइंटर एक असाइन किए गए मेमोरी लोकेशन में संग्रहीत है (जैसे कि इसका मान दो अलग कैश लाइनों में संग्रहीत किया जा सकता है? –

+0

@jdv: यह दुर्घटना से होने की संभावना नहीं है। इसलिए मुझे ऐसे मामलों में दिलचस्पी नहीं है कि –

+0

भले ही वे परमाणु हैं, आपको दृश्यता की समस्या होगी - जब तक कि देखभाल नहीं की जाती है, उस सूचक को किसी रजिस्टर में संग्रहीत किया जा सकता है जिसे स्मृति में कभी नहीं लिखा गया है - या स्मृति लिखने को फिर से किया जा सकता है और ऐसा नहीं होता है आपको लगता है कि यह आपके कोड – nos

उत्तर

3

यह ज्यादातर सीपीयू आर्किटेक्चर के लिए एक समस्या है जहां पॉइंटर चौड़ाई सीपीयू आर्किटेक्चर की चौड़ाई से बड़ी है। उदाहरण के लिए, ATmega सीपीयू पर, एक 8-बिट आर्किटेक्चर, पता स्थान 16-बिट है। यदि 16-बिट पते लोड और स्टोर करने के लिए कोई विशिष्ट निर्देश नहीं हैं, तो पॉइंटर मान को लोड/स्टोर करने के लिए कम-से-कम दो निर्देशों की आवश्यकता होती है।

+0

हाँ के अनुसार करता है, मुझे इसके बारे में पता है - अब डेस्कटॉप/सर्वर आर्किटेक्चर में अधिक दिलचस्पी है, लेकिन यह एक अच्छा जवाब है। –

2

here देखें।

+2

यह प्रश्न पर टिप्पणी के रूप में बेहतर होगा (और शायद एक सुझाव डुप्लिकेट के रूप में बंद करने के लिए) –

1

डैनियल ने कहा कि लगभग प्रत्येक वास्तुकला पर असर पड़ता है। जब तक स्मृति संरेखण लागू नहीं किया जाता है, प्रत्येक लेखन संभावित रूप से कई परिचालनों में परिणाम देता है लेकिन यह भी विफल रहता है यदि पता बस डेटा बस से छोटी है। इसलिए आपको लॉकिंग तंत्र का उपयोग करके कोड लिखने की अधिक संभावना होगी। यह वैसे भी एक अच्छा विचार है क्योंकि आप शायद अपने कोड पोर्टेबल होना चाहते हैं। कुछ बहुत ही विशेष आर्किटेक्चर के लिए ये लॉकिंग फ़ंक्शन बस खाली होंगे।

+0

क्या आप किसी प्लेटफ़ॉर्म को जानते हैं जहां एटीएम को छोड़कर यह मामला है Ega? –

+0

मेरे अनुभव में, "बहुत विशेष आर्किटेक्चर" इस ​​मामले में "अधिकांश आर्किटेक्चर" का अनुवाद करेंगे। –

0

पॉइंटर्स प्लेटफ़ॉर्म पर परमाणु प्रकार नहीं हो सकते हैं जो एमएस-डॉस या विन 3.x जैसे खंडित पता स्थान का उपयोग करते हैं। लेकिन मुझे इस प्रकार के आर्किटेक्चर (कम से कम मंच के स्तर पर) का उपयोग कर किसी भी आधुनिक डेस्कटॉप/सर्वर प्लेटफॉर्म से अवगत नहीं है।

हालांकि, सी संकलक के दृष्टिकोण से परमाणु एक लेखन है, भले ही आधुनिक डेस्कटॉप/सर्वर सिस्टम पर भी अन्य मुद्दे हो सकते हैं, खासकर मल्टीकोर/मल्टीप्रोसेसर सिस्टम (कैशिंग, प्रोसेसर द्वारा निचले स्तर पर मेमोरी एक्सेस रीडरिंग किया जाता है)। मेमोरी बाधाओं (यदि आवश्यक हो) का उपयोग करके उन मुद्दों के साथ एक मंच सौदे द्वारा प्रदान की गई 'परमाणु' एपीआई, तो आपको यह सुनिश्चित करने की कोशिश करते समय शायद उन एपीआई का उपयोग करना चाहिए जब स्मृति पहुंच परमाणु है।