volatile:
volatile是一個類型修飾符(type specifier),就像大家更熟悉的const一樣,它是被設計用來修飾被不同線程訪問和修改的變量。volatile的作用是作爲指令關鍵字,確保本條指令不會因編譯器的優化而省略,且要求每次直接讀值。可理解爲每次都從內存地址中讀取數據,不從寄存器中讀取。
舉例:
精確地說就是,優化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器裏的備份。下面是volatile變量的幾個例子:
1)並行設備的硬件寄存器(如:狀態寄存器)
3)多線程應用中被幾個任務共享的變量