这种用法是不是很好吗?

pyt*_*nic -1 c compiler-construction gcc volatile compiler-optimization

假设我在这样的循环中检查变量.

while( var )
  ;
Run Code Online (Sandbox Code Playgroud)

在这里,VAR必须申报volatile,如果程序是多线程和VAR被多个线程访问.这是一个众所周知的事实.但是,让我们说,我们有类似的东西.

while( var + 1 )
  ;
Run Code Online (Sandbox Code Playgroud)

这还能用volatile吗?我的意思是编译器可能缓存(var + 1)的值吗?换句话说,我问我们是否需要像下面这样编写代码,temp也是一个volatile变量,以确保编译器不会进行缓存.

while( temp )
  temp = var + 1;
Run Code Online (Sandbox Code Playgroud)

Mic*_*gan 5

我可以补充说,使用volatile作为你的线程防护来检查这样的var 并不足以防止发生各种各样和各种各样的竞争条件.如果您处于线程环境中,请使用正确的锁,原子和/或互斥结构来抓取和操纵变量.