volatile का अर्थ दो चीजें हैं:
- वेरिएबल का मान आपके किसी भी कोड को बदले बिना बदल सकता है। इसलिए जब भी कंपाइलर वेरिएबल का मान पढ़ता है, तो वह यह नहीं मान सकता कि यह पिछली बार पढ़े गए मान के समान है, या यह अंतिम संग्रहीत मान के समान है, बल्कि इसे फिर से पढ़ा जाना चाहिए।
- एक volatile वेरिएबल में मान संग्रहीत करने का कार्य एक "साइड इफेक्ट" है जिसे बाहर से देखा जा सकता है, इसलिए कंपाइलर को मान संग्रहीत करने के कार्य को हटाने की अनुमति नहीं है; उदाहरण के लिए, यदि दो मान एक पंक्ति में संग्रहीत किए जाते हैं, तो कंपाइलर को वास्तव में मान को दो बार संग्रहीत करना होगा।
एक उदाहरण के रूप में:
i = 2; i = i;
कंपाइलर को नंबर दो संग्रहीत करना होगा, वेरिएबल i को पढ़ना होगा, पढ़े गए वेरिएबल को i में संग्रहीत करना होगा।
volatile कीवर्ड पर अधिक विवरण यहां पाए जा सकते हैं: https://www.geeksforgeeks.org/understanding-volatile-qualifier-in-c/