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)
我可以补充说,使用volatile作为你的线程防护来检查这样的var 并不足以防止发生各种各样和各种各样的竞争条件.如果您处于线程环境中,请使用正确的锁,原子和/或互斥结构来抓取和操纵变量.
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |