關(guān)鍵字volatile
volatile,本意是“易變的”空入。
在C語言中作為關(guān)鍵字使用络它,指示一個(gè)變量可能被后臺程序改變。用volatile修飾的變量歪赢,每次使用時(shí)都會從內(nèi)存中重新加載內(nèi)容化戳,而不是直接從寄存器拷貝內(nèi)容。
volatile和優(yōu)化有關(guān)
- 由于內(nèi)存訪問速度遠(yuǎn)不及CPU處理速度埋凯,為提高機(jī)器整體性能点楼,在硬件上引入硬件高速緩存Cache,加速對內(nèi)存的訪問白对。
- 編譯器優(yōu)化常用的方法有:將內(nèi)存變量緩存到寄存器掠廓;調(diào)整指令順序充分利用CPU指令流水線,常見的是重新排序讀寫指令甩恼。
我們可以使用volatile關(guān)鍵字試圖阻止過度優(yōu)化蟀瞧,volatile基本可以做到以下兩件事情:
1.阻止編譯器為了提高速度將一個(gè)變量緩存到寄存器內(nèi)而不寫回。
2.阻止編譯器調(diào)整操作volatile變量的指令順序条摸。
——以上答案來自《程序員的自我修養(yǎng)》29頁悦污。