美文网首页
volatile底层原理 --CPU缓存模型

volatile底层原理 --CPU缓存模型

作者: test_java | 来源:发表于2020-08-07 14:50 被阅读0次

    cpu可以直接操作自己对应的告诉缓存,不需要直接频繁的跟主内存通信,这样可以保证cpu的计算的效率非常的高。会有一个问题,
    在多个CPU 对主内存的操作,而CUP读取数据是从缓存里面获取。而CPU 对主内存做操作,而另一个CPU是不知道。导致数据不一致性的问题。


    image.png

    有序性问题

    对于代码,同时还有一个问题是指令重排序,编译器和指令器,有的时候为了提高代码执行效率,会将指令重排序,就是说比如下面的代码

    flag = false;

    //线程1:
    prepare(); // 准备信息
    flag = true;

    //线程2:
    while(!flag){
    Thread.sleep(2000);
    }
    execute();

    重排序之后,让flag = true先执行了,会导致线程2直接跳过while等待,执行某段代码,结果prepare()方法还没执行,资源还没准备好呢,此时就会导致代码逻辑出现异常。

    相关文章

      网友评论

          本文标题:volatile底层原理 --CPU缓存模型

          本文链接:https://www.haomeiwen.com/subject/ermfdktx.html