के रूप में चिह्नित करें, मैं वर्तमान में PostgreSql कोड पढ़ रहा हूं। यहाँ बफर प्रबंधक से एक अंश है:क्यों फ़ंक्शन तर्क को अस्थिर
static void WaitIO(volatile BufferDesc *buf);
static bool StartBufferIO(volatile BufferDesc *buf, bool forInput);
static void TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty,
मैं जानता हूँ कि अस्थिर कीवर्ड आमतौर पर डिवाइस ड्राइवर के लिए और एम्बेडेड प्रणाली में प्रयोग किया जाता है। कीवर्ड का एक स्पष्टीकरण है।
जब कीवर्ड अस्थिरता प्रकार परिभाषा में उपयोग किया जाता है तो यह कंपाइलर को संकेत देता है कि यह चर को कैसे संभालना चाहिए। मुख्य रूप से यह संकलक को बता रहा है कि प्रोग्राम के बाहरी कार्यों या निष्पादन की वर्तमान पंक्ति के परिणामस्वरूप चर के मान किसी भी समय बदल सकते हैं। (Source)
तो क्यों कुछ समारोह तर्क अस्थिर रूप में घोषित कर रहे हैं? मुझे उम्मीद नहीं है कि डीएमए सूचक स्थान बदलता है। तो यहाँ क्या होता है?
यह सुनिश्चित नहीं है कि यह एक और सवाल के लायक है, लेकिन यह जानने में रुचि है कि आप 'शून्य फनक (int volatile arg) क्यों लिख सकते हैं; ' – ideasman42