चूंकि आप उन उपयोग मामलों में रुचि रखते हैं, इसलिए मैं पहले को समझाऊंगा। ध्यान दें कि यह एक सी/सी ++ परिप्रेक्ष्य से लागू होता है, यह सुनिश्चित नहीं है कि यह जावा में कैसे खेलता है, हालांकि मुझे सामान्य रूप से सी/सी ++ में अस्थिरता पर संदेह है और जावा का उपयोग पूरी तरह से अलग-अलग मामलों के लिए किया जाता है।
मेमोरी मैप किए गए डिवाइस परिधीय हैं जो प्रोसेसर एक विशेष बस के बजाए स्मृति के समान तरीके से संचार करता है।
मान लीजिए कि आपके पास मेमोरी मैप किए गए टाइमर के साथ थोड़ा हल्का है। आप 1 मेमोरी एड्रेस & पर लिखकर प्रकाश को चालू करते हैं, इसके आंतरिक टाइमर 5 सेकंड & के लिए नीचे गिना जाता है और प्रकाश स्थान को 0 पर रीसेट करता है। अब आप एक प्रोग्राम विकसित कर रहे हैं जिसे कुछ घटनाओं के बाद उस रोशनी को चालू करने की आवश्यकता है , और काउंटर की समाप्ति से पहले इसे कभी-कभी बंद कर दें। यदि आप अपने मेमोरी लोकेशन को लिखने के लिए नियमित चर (एक पॉइंटर या इस प्रकार के एप्लिकेशन के लिए संदर्भ होते हैं) का उपयोग करते हैं, तो कंपाइलर ऑप्टिमाइज़ेशन के कारण कई चीजें गलत हो सकती हैं।
आपको लगता है कि कई चर के साथ काम नहीं कर रहे हैं और आपको लगता है कि मूल्य का उपयोग कर किसी भी अन्य चर के बिना इसे बंद करने के बाद पर प्रकाश बदल रहे हैं और शीघ्र ही वहाँ - में कभी कभी संकलक कुल मिलाकर पहला काम से छुटकारा मिल जाएगा, या अन्य मामलों में यह प्रोसेसर रजिस्टरों & में कभी भी स्मृति को लिखने में मूल्य बनाए रखेगा। इन दोनों मामलों में, प्रकाश woudl कभी चालू नहीं है क्योंकि यह स्मृति कभी नहीं बदला गया था।
अब एक और परिस्थिति के बारे में सोचें जहां आप & पर प्रकाश की स्थिति की जांच करते हैं। यहां, प्रोसेसर रजिस्टर में रखे गए डिवाइस की मेमोरी & से मान निकाला जाता है। अब, कुछ सेकंड के बाद, प्रकाश स्वयं ही बंद हो जाता है। इसके तुरंत बाद आप प्रकाश को फिर से चालू करने का प्रयास करते हैं, हालांकि जब से आप उस मेमोरी एड्रेस को पढ़ते हैं & ने इसे तब से नहीं बदला है, इसलिए संकलक मानता है कि मान अभी भी एक & है, इसलिए इसे कभी भी नहीं बदला जाता है, हालांकि यह वास्तव में 0 है।
अस्थिर कुंजी शब्द का उपयोग करके, आप संकलक को मशीन कोड & में अपने कोड को परिवर्तित करते समय उन धारणाओं को बनाने से रोकते हैं, यह सुनिश्चित करता है कि उन सभी विशिष्ट संचालन प्रोग्रामर द्वारा लिखे गए अनुसार कड़ाई से किए जाते हैं। मेमोरी मैप किए गए उपकरणों के लिए यह आवश्यक है क्योंकि प्रोसेसर द्वारा स्मृति स्थान को सख्ती से बदला नहीं जाता है। इन कारणों से, साझा स्मृति वाले मल्टीप्रोसेसर सिस्टम को आम स्मृति स्थान पर चलते समय अक्सर समान प्रथाओं की आवश्यकता होती है।
उत्तर के लिए धन्यवाद। उपर्युक्त सूचीबद्ध उपयोगों में वास्तव में अस्थिर कार्य करने के तरीके पर कोई इनपुट? – Ankur