volatile修飾變數表示該變數易受外界影響發生改變,volatile強烈要求編譯器每次對變數進行訪問都要從記憶體中進行;
int a = 10;
b = a;
c = b;
當編譯器掃到第一行時10賦給了a;自後a變數的值沒有發生改變,a賦給了b,b賦給了c ,由於cpu訪問記憶體的速度較慢,編譯器為了提高效率,直接將10賦給了c。
當是在多執行緒程式設計當中,在乙個執行緒中變數的值沒有改變,我們不能保證在其他執行緒中變數 的值沒有改變;所以在這些情況下我們要用volatile修飾變數,保證變數是從記憶體中讀取,保證資料的一致性
C語言volatile關鍵字
volatile 是易變的 不穩定的意思。很多人根本就沒見過這個關鍵字,不知道它的存在。也有很多程式設計師知道它的存在,但從來沒用過它。我對它有種 楊家有女初長成,養在深閨人未識 的感覺。volatile 關鍵字和const 一樣是一種型別修飾符,用它修飾的變數表示可以被某些編譯器未知的因素更改,比...
C語言關鍵字 volatile
volatile關鍵字 用法 1 告訴編譯器不做任何優化 2 表示用volatile定義的變數會在程式外被改變,每次都必須要從記憶體中讀取,而不能把它放在cache或暫存器中重複使用 volatile是告訴編譯器對它所修飾的物件別執行優化。volatile在進行多執行緒程式設計時要注意,而在單執行緒...
C語言 volatile關鍵字
舉例說明 volatile int i 10 int j i int k i volatile 告訴編譯器i是隨時可能發生變化的,每次使用它的時候必須從i的位址中讀取,因而編譯器生成的可執行碼會重新從i的位址讀取資料放在k中。volatile 影響編譯器編譯的結果,指出,volatile 變數是隨時...