韌館-LearnHouse

[C/C++]c語言中volatile關鍵字

資料來源:msdnC++心得分享

volatile 關鍵字表示同時執行的多執行緒可能修改了欄位。

宣告為 volatile 的欄位不遵從假設單一執行緒存取的編譯器最佳化。這確保最新的值會一直出現在欄位中。

volatile 為一關鍵字 加在變數的前面,被 volatile 宣告的變數 將不會使用最佳化編譯

有時一個變數的值改變了 compiler 並不會馬上將他寫入記憶體中

而會先把結果放在CPU暫存器中 等到處理結束之後 才寫入記憶體

說這個變數是多執行緒的flag 其他的執行緒要透過這個變數來反應

而這個值卻又沒有寫入記憶體 這時便會發生意想不到的結果

又或者是這變數為一個硬體的暫存器 會被硬體所改變,然而compiler 並沒有正確的將值從硬體暫存器取出來

而是將自己暫存的值拿來使用,種情況 就是要用volatile 來宣告變數 告訴compiler不要自己暫存變數來提升速度

如此這個變數有任何的改變 便會馬上反應出來 

2008年7 月 posted by admin in 程式&軟體 and have Comments (2)

2 Responses to “[C/C++]c語言中volatile關鍵字”

Place your comment

Please fill your data and comment below.
名稱:
信箱:
網站:
您的評論: