volitail关键字

Posted chen-xing-eli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了volitail关键字相关的知识,希望对你有一定的参考价值。

一、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关键字的主要内容,如果未能解决你的问题,请参考以下文章

大厂面试:volitail实现原理

RF 关键字、变量与循环

数据库中,啥是超关键字,候选关键字,主关键字?麻烦举例说明

关系型数据库中的关键字主关键字和候选关键字

数据库中啥是主关键字?主关键字与外关键字的区别与联系?

怎样判断一个单词是否ABAP中的关键字