码迷,mamicode.com
首页 > 其他好文 > 详细

volitail关键字

时间:2020-06-23 00:40:30      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:懒汉式   可见性   特性   其他   掺杂   指令   重排序   缓存   控制   

一、volitail起到什么作用

  1.可变的,跟踪变量的变化,保证线程的可见性.

    1.1堆内存是所有线程共享的内存,每个线程都有自己专属的工作内存,当某一线程要访问某一个值的时候,都会copy一份到自己的空间,单线程要改变这个值的时候首先会对自己空间里的值进行改变,

      什么时候写回堆的时候不好控制.其他线程也不好控制堆内存的值是否改变.这时用到volitail可以让各个线程共享到这个值的改变.

    1.2volitail的本质是用了MESI(CPU的缓存一致性协议)

  2.禁止指令重排序.

    1.老的cpu架构是并行执行,新的cpu是并发的执行,如果想用新的架构特性就需要compiler(编译器)对执行代码进行重新排序,

      例: a =1 ; b = 2 ; a =4 ;  可能会重排序成 a=4 ;b =2; a =1;

    2.单例模式 double check

      单例模式懒汉式要加sync关键字才能保证线程安全.如果获取对象的代码块里掺杂了业务在里面,锁整个代码块会降低效率,这是锁要夹在创建对象那块.

      

volitail关键字

标签:懒汉式   可见性   特性   其他   掺杂   指令   重排序   缓存   控制   

原文地址:https://www.cnblogs.com/chen-xing-Eli/p/13179842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!