2011-04-11 94 views
0

可能重复:
What is the use of volatile keyword?volatile关键字

为什么使用volatile关键字在C++?它的正确用法是什么?

作为每个定义

volatile关键字是用于声明一个对象可以被在程序由一些诸如操作系统,硬件,或并发执行的线程修改类型限定符。

并且在其实例中,

volatile bool Isrunning; 
Isrunning=true; 

并且人们将其用于例如

if(Isrunning) 
{ 
//some code here.... 
} 

,并在年底

Isrunning=false; 

所以我的问题是它是如何从提前bool Isrunning;

感谢diferent。 露水

+1

请在发布问题之前花5秒时间查看预览,看看它是否可读。您只需选择文本并按下“{}”按钮即可格式化代码。通过不这样做,你的问题就会出现,就好像你不关心它,并且不想尽力让其他人阅读(和回答)。我们没有人能够获得回报来回答你的问题,所以请不要给我们更多的工作,因为发布格式不正确或难以理解的问题。 – jalf 2011-04-11 10:58:59

+0

@jalf我得到2个回答和2条评论,除了你对此问题的评论。你仍然认为它不可读? – Dew 2011-04-11 11:12:40

+0

不,我认为在修复它后,它更具可读性。你否认这一点?退后一步,*想*。 *你*是需要帮助的人。 *你*在花费5秒钟之前清理你的问题,或者你需要帮助* *花费5秒钟*阅读*问题。你是说你更喜欢后者?你期望别人不只是阅读你的问题,而是要做你所做的额外工作**懒得做**? – jalf 2011-04-11 11:17:46

回答

2

这只是有效的用法,如果你绝对需要确保变量的值永远不会保存在寄存器中,而是立即写出并从内存中读取。重新排序读取和写入也是禁止的。

这对存储器映射硬件I/O来说主要是必需的。

请注意,C和C++中的易失性确实为而不是强制执行多线程的原子读/写语义。你的定义在这个问题上是错误的。