Volatile變量

在程序設計中 ， 尤其是在C語言 、 C++ 、 C# 和Java語言中 ， 使用volatile關鍵字聲明的變量或對象通常具有與優化 、 多線程相關的特殊屬性 。 通常 ， volatile關鍵字是用來阻止 （ 僞 ） 編譯器因誤認某段程式碼無法被程式碼本身所改變 ， 而造成的過度優化 。 如在C語言中 ， volatile關鍵字可以用來提醒編譯器它後面所定義的變量隨時有可能改變 ， 因此編譯後的程序每次需要存儲或讀取這個變量的時候 ， 都會直接從變量地址中讀取數據 。 如果沒有volatile關鍵字 ， 則編譯器可能優化讀取和存儲 ， 可能暫時使用寄存器中的值 ， 如果這個變量由別的程序更新了的話 ， 將出現不一致的現象 。 在C環境中 ， volatile關鍵字的真實定義和適用範圍經常被誤解 。 雖然C + + 、 C# 和Java都保留了C中的volatile關鍵字 ， 但在這些編程語言中volatile的用法和語義卻大相徑庭 。