Advertisement

260-volatile易变关键字

阅读量:

1.volatile易变关键字

当遇到一个由关键字标识声明的变量时,在编译阶段会对访问该变量的代码执行特定处理以避免干扰。然而,在这种情况下,并不进行优化处理以提高性能。

系统不断从它所在的内存中重新获取数据,并不考虑前面的指令刚刚从该处执行过的情况,在此之后立即保存了这些数据

该标识符用于指定某个对象在其内存中的存储位置而非寄存器位置。通常情况下,在编译过程中,默认情况下对象会被复制到寄存器以加快指令速度。

volatile 作用为编译器在每次操作该变量时从内存中取出相应的值,并不使用已经存在的寄存器中的值

例如:

复制代码
    volatile int i=10;
    int a = i;
    ...
    // 其他代码,并未明确告诉编译器,对 i 进行过操作
    int b = i;

通过volatile修饰符标识变量i可能存在随时变化的风险。每当访问该变量时必须通过其内存地址获取当前值,在未优化的情况下,在编译后的机器码执行时会再次加载变量i的数据到寄存器b。为了提升程序效率与稳定性这一操作会被智能地跳过。优化方案在于若编译器检测两次连续加载变量i的操作中间无其他修改指令则可将上一次的结果直接复制到目标寄存器而不必重复加载变量值以减少不必要的计算开销这种情况下程序运行效率将得到显著提升从而避免因使用寄存器或端口数据而导致结果

全部评论 (0)

还没有任何评论哟~