|
|
本帖最后由 254zhang 于 2020-9-17 18:33 編輯
在多線程和中斷中的變量需要加 volatile關(guān)鍵字來告訴編譯器不要優(yōu)化該變量,每次都從內(nèi)存地址讀取而不是寄存器的備份,但是我閱讀了ucOSiii的源碼,發(fā)現(xiàn)里面沒有用到這個關(guān)鍵字,比如像 OSIntNestingCtr 這種在中斷中更新,用來記錄中斷嵌套層次的變量都沒有使用 volatile關(guān)鍵字,這樣的代碼在開啟優(yōu)化的時候不會出問題嗎?uc是成熟的代碼了,肯定不會犯這種錯誤,這里是另有什么玄機(jī)我沒發(fā)現(xiàn)碼,有誰知道咋回事? |
|