मुझे जावा में पता है, अगर आपके पास एक चर का उपयोग करने वाले एकाधिक थ्रेड हैं जो अस्थिर के रूप में चिह्नित नहीं हैं, तो आप कुछ अप्रत्याशित व्यवहार प्राप्त कर सकते हैं।क्या सी # और जावा का अस्थिर कीवर्ड दोनों ही व्यवहार करते हैं?
उदाहरण:
private boolean bExit;
while(!bExit) {
checkUserPosition();
updateUserPosition();
}
आप voilatile रूप bExit चर चिह्नित करते हैं, कि गारंटी है कि अन्य थ्रेड सबसे हाल ही में मूल्य देखेंगे।
क्या सी # वही व्यवहार करता है?
int counter = ...;
for(...)
{
new Thread(delegate()
{
Interlocked.Decrement(ref counter);
}
}
if(counter == 0)
{
// halt program
}
ऊपर में सी # में, आप अस्थिर रूप में काउंटर चर को चिह्नित करने की क्या ज़रूरत है या यह काम करेगा:
अद्यतन
उदाहरण के लिए, सी # में आप ऐसा करते हैं, तो जैसा सोचा था?
प्रत्येक * रनटाइम * (जेवीएम या सीएलआर मेमोरी मॉडल) में कुछ ओवरलैप के साथ नियमों का एक अलग सेट होता है। दोनों भाषाओं/रनटाइम्स और तुलना में 'अस्थिर' के सही (और गलत) उपयोगों को देखने पर विचार करें। – user2246674
सी # अस्थिरता वास्तव में कम मेमोरी अनुप्रयोगों में उपयोग के लिए आरक्षित है और वास्तव में केवल अंतिम अंतिम उपाय के रूप में उपयोग किया जाना चाहिए, कुछ दस्तावेज है जो सी #: http://msdn.microsoft.com/en-us के संदर्भ में देखने के लिए है। /library/x13ttww7(v=vs.71).aspx – Nomad101
@ नोमाड 101 - मुझे यकीन नहीं है कि कम स्मृति अनुप्रयोगों और अस्थिर कीवर्ड के बीच क्या संबंध है। – hatchet