zoukankan      html  css  js  c++  java
  • c volatile

    volatile 的本意是“易变的”,因为访问寄存器要比访问内存单元快的多,所以编译器一般都会做减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的语句进行优化。简洁的说就是:volatile影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。

    示例:

      volatile int running = 1;
      ​
      while (running) {
          ; // TODO
      }

    以上代码中,running 在定义之后没有再修改它的内容,如果变量 running 不加 volatile 关键字,running 会被编译器优化为一个常量(右值),当使用 gdb 进行调试,修改 running 的值(set running = 0)的时候,会报 Left operand of assignment is not an lvalue 的错误,因此此外霜 volatile 在此处的作用就是告诉编译器:不要对running 变量做任何的优化。

  • 相关阅读:
    rapidjson 的练习
    在Struts2中集成Spring详细讲解
    AJAX实例入门
    Redhat Enterprise Linux中如何关闭SELinux?
    C3P0连接池详细配置
    hibernate中load,get;find,iterator;merge,saveOrUpdate,lock的区别
    107个常用Javascript语句
    车祸 shit
    JAVASCRIPT实现XML分页
    javabeans的运用
  • 原文地址:https://www.cnblogs.com/tongyishu/p/13431687.html
Copyright © 2011-2022 走看看