zoukankan      html  css  js  c++  java
  • java并发之volatile

      volatile是轻量级的synchronized,它在多处理器应用开发中保证了共享变量的“可见性”(可见性指当一个线程修改共享变量后,其它线程可以看到这个修改)。

    volatile如果使用合理会比synchronized开销更小,因为volatile不会引起上下文的切换和调度。

      在x86处理器上,被volatile修饰的变量进行写操作时生成的汇编代码会被Lock指令修饰,Lock前缀的指令在多核处理器下会引发两件事情:

        a.将当前处理器缓存行的数据写回到系统内存。

        b.这个写回内存的操作会使在其他cpu里缓存了该内存地址的数据无效(缓存一致性协议,缓存通过嗅探总线上传播的数据来检查自己缓存的值是不是已经过期了)。

      volatile的两条实现原则:

      1)Lock前缀指令会引起处理器缓存回写到内存。

      2)一个处理器的缓存回写到内存会导致其它处理器的缓存无效。

  • 相关阅读:
    BM&EXCRT
    杨丰磊
    poj3613 Cow Relays
    详解KMP算法
    信息学作文
    恐怖的奴隶主(bob)
    玩具(toy)
    杯子 (glass)
    P3916 图的遍历
    《上帝给我一个任务,叫我牵一只蜗牛去散步》
  • 原文地址:https://www.cnblogs.com/lxk2010012997/p/5589864.html
Copyright © 2011-2022 走看看