volatile หมายถึงสองสิ่ง:
- ค่าของตัวแปรอาจเปลี่ยนไปโดยไม่มีโค้ดของคุณเปลี่ยนมัน ดังนั้นเมื่อคอมไพเลอร์อ่านค่าของตัวแปร มันไม่ควรสมมติว่าค่านั้นเหมือนครั้งล่าสุดที่อ่าน หรือเหมือนค่าล่าสุดที่เก็บไว้ แต่ต้องอ่านใหม่ทุกครั้ง
- การเก็บค่าให้กับตัวแปร volatile เป็น "side effect" ที่สังเกตได้จากภายนอก ดังนั้นคอมไพเลอร์จึงไม่ได้รับอนุญาตให้ลบการกระทำของการเก็บค่า เช่น ถ้ามีการเก็บค่าสองครั้งติดกัน คอมไพเลอร์ต้องเก็บค่าจริงๆ สองครั้ง
ตัวอย่าง:
i = 2; i = i;
คอมไพเลอร์ต้องเก็บเลขสอง อ่านตัวแปร i เก็บค่าที่อ่านได้กลับเข้า i
รายละเอียดเพิ่มเติมเกี่ยวกับคีย์เวิร์ด volatile: www.geeksforgeeks.org/understanding-volatile-qualifier-in-c/