आमतौर पर इस तरह का एक कोड इंगित करता है कि vol_flag
किसी बिंदु पर बाहरी बदलने की उम्मीद है। यहां, बाहरी का मतलब एक अलग थ्रेड, एक इंटरप्ट हैंडलर, हार्डवेयर का एक टुकड़ा (मेमोरी मैप किए गए आईओ के मामले में) आदि हो सकता है। यह पाश प्रभावी ढंग से बाहरी घटना के लिए इंतजार कर रहा है जो ध्वज को बदलता है।
volatile
कीवर्ड प्रोग्रामर के लिए यह तथ्य व्यक्त करने का एक तरीका है कि कोड से स्पष्ट क्या है: अर्थात् लूप में ध्वज नहीं बदला जाता है। इस प्रकार, यह संकलक को अनुकूलन करने से रोकता है जो कोड के पीछे इरादे से समझौता कर सकता है। इसके बजाए, कंपाइलर को ध्वज के मूल्य को लाने के लिए स्मृति संदर्भ बनाने के लिए मजबूर होना पड़ता है।
ध्यान दें कि (विपरीत जावा में) volatile
सी में/C++ स्थापित नहीं करता होता है-पहले संबंध और किसी भी आदेश या अस्थिर पहुँच भर में स्मृति संदर्भ की दृश्यता की गारंटी नहीं है। इसके अलावा, यह परिवर्तनीय संदर्भों की परमाणुता सुनिश्चित नहीं करता है। इस प्रकार, यह धागे के बीच संचार के लिए एक उपकरण नहीं है। विवरण के लिए this देखें।
स्रोत
2012-05-11 06:58:22
यह बहु-थ्रेडेड कोड में कुछ खराब स्पिन-लॉक की तरह दिखता है। –
शायद यह डिबगिंग के लिए है? – animaonline
इस तरह का कोड आमतौर पर माइक्रो नियंत्रकों के लिए कार्यक्रमों में पाया जाता है। – alexander