डी 2 स्थानीय भंडारण के लिए डिफ़ॉल्ट, जबकि सी, सी ++ और डी 1 डिफ़ॉल्ट रूप से वैश्विक भंडारण के लिए डिफ़ॉल्ट है।
अंतरों में से एक यह है कि डी में एक वैश्विक चर अन्य धागे के लिए दृश्यमान है, जबकि टीएलएस नहीं है।
यह अधिक पसंद नहीं हो सकता है, लेकिन इसे महसूस किए बिना सी लाइब्रेरी में इंटरफेसिंग करने का प्रयास करें। (अपरिवर्तनीय है। वैश्विक भी)
आईएमई __gshared काफी सामान्य रूप से वैश्विक रूप से कुछ मजबूर करने के लिए मौजूद है, आमतौर पर यह नहीं होगा।
इसके लिए अन्य उपयोग भी हो सकते हैं, लेकिन मैंने कोई भी नहीं देखा है।
एक उदाहरण सी हेडर में एक वैश्विक चर होगा। यदि आप इसके साथ इंटरफ़ेस करने का प्रयास करते हैं, तो आपको अपरिवर्तनीय या __gshared की आवश्यकता होगी। निश्चित रूप से अन्य तरीके हैं, लेकिन यह शायद सबसे आसान है।
तो दूसरे शब्दों में, दोनों यहां व्यर्थ हैं? – Mehrdad
__gshared एक नो-ऑप नहीं है। यह स्थिर है। – dsimcha
इसके अलावा: जबकि 'साझा int' स्थानीय चर के लिए डीएमडी के वर्तमान कार्यान्वयन में केवल एक प्रकार क्वालीफायर (उदाहरण के लिए 'const') जैसा व्यवहार करता है, ठीक तरह से लागू' साझा '- जिस तरह से मैं इसे समझता हूं - पढ़ने-प्राप्त होना चाहिए और लिखने-रिलीज-सेमेन्टिक्स (यानी कई आर्किटेक्चर पर मेमोरी बाड़ का उपयोग करें और कुछ कंपाइलर अनुकूलन से बचें, http://www.digitalmars.com/d/2.0/faq.html#shared_memory_barriers) भी देखें। यह कभी-कभी स्थानीय चर के लिए भी प्रासंगिक होगा, उदाहरण के लिए, अन्य धागे के भीतर निष्पादित बंद होने के मामले में (या क्रॉस-थ्रेड स्टैक एक्सेस के दुर्लभ मामले में)। – stephan