我有一个正在运行 2 个线程的应用程序... 是否可以确定当我从一个线程更改全局变量时,另一个线程会注意到此更改?我没有任何同步或互斥系统......但这段代码是否应该一直工作(想象一个名为dataUpdated的全局布尔值):
线程 1:
while(1) {
if (dataUpdated)
updateScreen();
doSomethingElse();
}
线程 2:
while(1) {
if (doSomething())
dataUpdated = TRUE;
}
像 gcc 这样的编译器是否会以不检查全局值的方式优化此代码,只在编译时考虑它的值(因为它永远不会同时更改)?
PS:对于类似游戏的应用程序来说,在写入值时是否会读取并不重要......重要的是其他线程会注意到更改。