volatile關鍵字的作用

2021-10-10 08:28:03 字數 541 閱讀 3764

當乙個共享變數被volatile修飾時,它會保證修改的值立即被更新到主存「。

由於非volatile變數進行讀寫的時候,每個執行緒先從主記憶體拷貝到cpu快取中,每個執行緒可能在不同的cpu上被處理,當乙個執行緒修改了這個變數的值,新值對於其他執行緒有可能不會立即得知。volatile關鍵字可以禁用cpu快取,避免了此類問題。

volatile特性

記憶體可見性:通俗來說就是,執行緒a對乙個volatile變數的修改,對於其它執行緒來說是可見的,即執行緒每次獲取volatile變數的值都是最新的。

volatile的使用場景

通過關鍵字sychronize可以防止多個執行緒進入同一段**,在某些特定場景中,volatile相當於乙個輕量級的sychronize,因為不會引起執行緒的上下文切換,但是使用volatile必須滿足兩個條件:

1、對變數的寫操作不依賴當前值,如多執行緒下執行a++,是無法通過volatile保證結果準確性的;

2、該變數沒有包含在具有其它變數的不變式中。

關鍵字 volatile關鍵字的作用

1.volatile關鍵字是防止在共享的空間發生讀取的錯誤。只保證其可見性,不保證原子性 使用volatile指每次從記憶體中讀取資料,而不是從編譯器優化後的快取中讀取資料,簡單來講就是防止編譯器優化。2.在單任務環境中,如果在兩次讀取變數之間不改變變數的值,編譯器就會發生優化,會將ram中的值賦值...

volatile關鍵字作用

1.阻止編譯器對 進行優化。即讀取某個變數值時,不從暫存器中讀取而是從變數裡讀。2.編譯器的優化 在本次執行緒內,當讀取乙個變數時,為提高訪問速度,編譯器優化時有時會先把變數讀取到乙個暫存器中 以後再取變數值時,就直接從暫存器中取值 當變數值在本執行緒裡改變時,會同時把變數的新值copy到該暫存器中...

volatile關鍵字的作用

在c c 語言中經常會遇到volatile關鍵字,它的字面意思是 可變的 不穩定的 volatile 會影響編譯器編譯的結果,被volatile修飾的變數是隨時可能發生變化的,編譯器對volatile變數有關的運算,不進行編譯優化,以免出錯,vc 在產生release版可執行碼時會進行編譯優化,加v...