【问题标题】:Volatile keyword [duplicate]可变关键字[重复]
【发布时间】:2011-04-11 10:54:54
【问题描述】:

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

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

根据定义

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

在示例中它被贴花为例如

volatile bool Isrunning;
Isrunning=true;

人们将它用于例如

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

最后

Isrunning=false;

所以我的问题是它与bool Isrunning; 有何不同

提前致谢。 露水

【问题讨论】:

  • 请在发布问题之前花 5 秒时间查看预览,看看它是否可读。您只需选择文本并按下{ } 按钮即可格式化代码。如果不这样做,您的问题就好像您不关心它,并且不想尽最大努力使其他人易于阅读(和回答)。我们没有人因回答您的问题而获得报酬,所以请不要通过发布格式错误或难以阅读的问题来给我们额外的工作。
  • @jalf 除了您对此问题的评论外,我得到了 2 个答案和 2 个 cmets。你还觉得它不可读吗?
  • 不,我认为它在我修好后更多可读。你否认这一点吗?退后一步,想想是需要帮助的人。要么在你提出问题之前多花5秒清理你的问题,或者你需要来自帮助的人多花5秒阅读问题。你是说你更喜欢后者?您希望其他人不仅会阅读您的问题,而且会做您太无法做的额外工作?

标签: c++


【解决方案1】:

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

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

请注意,C 和 C++ 中的 volatile 为多个线程强制执行原子读/写语义。您在该主题上的定义是错误的。

【讨论】:

    猜你喜欢
    • 2011-01-17
    • 2012-12-09
    • 2019-04-04
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多