善變的volatile

    volatile是一個類型修飾符。意思是不穩定,易變。ide

  例如:優化

    int i= 10;內存

     int j = i;(1)編譯器

    int k = i;   (2)it

這時候編譯器會對代碼進行優化,在後兩句中,i並無被用做左值。這時候編譯器認爲i的值沒有發生變化。因此一語句認爲從內存中讀取的i的值。這個值沒有被丟掉,繼續賦給k,這樣就提升了效率。編譯

再看另外一個例如:class

 

    volatile int i = 10;效率

    int j = i;數據

    int k = i;di

volatile告訴編譯器i的值是隨時可能變化的。每次使用它的時候必須從內從中讀取。於是編譯器會生成彙編代碼從新從i的地址處讀取數據賦給k中。

相關文章
相關標籤/搜索