易变的关键字

时间:2011-04-11 10:54:54

标签: c++

  

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

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

根据定义

  

volatile关键字是一个类型限定符,用于声明可以通过诸如操作系统,硬件或同时执行的线程之类的东西在程序中修改对象。

并且在示例中,它例如为

volatile bool Isrunning;
Isrunning=true;

并且人们将其用于例如

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

并在最后

Isrunning=false;

所以我的问题是它与bool Isrunning;

有何不同

提前致谢。 露

1 个答案:

答案 0 :(得分:2)

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

这主要是内存映射硬件I / O所必需的。

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