如果有兩個線程訪問全局變量,那么許多教程都表示,使變量易失性,以防止編譯器將變量緩存在寄存器中,從而無法正確更新變量。但是,兩個線程都訪問共享變量是需要通過互斥保護的,不是嗎?但是在這種情況下,在線程鎖定和釋放互斥鎖之間,代碼處于一個關鍵部分,其中只有一個線程可以訪問變量,在這種情況下,變量不需要是易失性的?那么,在多線程程序中易失性的用途/用途是什么呢?何時使用易失性與多線程?
3 回答

慕森王
TA貢獻1777條經驗 獲得超3個贊
/* global */ bool flag = false;while (!flag) {}
if (!flag) { while (true) {} }

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
volatile bool flag = false;while (!flag) { /*do something*/}
- 3 回答
- 0 關注
- 378 瀏覽
添加回答
舉報
0/150
提交
取消