什么是内存模型的happens-before

Posted 拖油瓶小艺的爸爸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是内存模型的happens-before相关的知识,希望对你有一定的参考价值。

什么是内存屏障?

  内存屏障,又称为内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。

 

内存屏障为何重要?

  对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存能够从数量级上降低内存延迟的成本,这些缓存为了性能重新排列待定内存操作的顺序。

  也就是说,程序的读写操作不一定会按照它要求处理器的顺序执行。

  当数据是不可变,或者数据限制在线程范围内,这些优化是无害的。

  如果把这些优化与对称多处理和共享可变状态结合,那么就是一场噩梦。

 

当基于共享可变状态的内存操作被重新排序时,程序可能行为不定。一个线程的写入的数据可能被其它线程可见。原因是数据写入的顺序不一致。适当的放置内存屏障,通过强制处理器顺序执行待定的内存操作来避免这个问题。

以上是关于什么是内存模型的happens-before的主要内容,如果未能解决你的问题,请参考以下文章

《java并发编程实战》读书笔记13--Java内存模型,重排序,Happens-Before,

3.java内存模型以及happens-before规则

阿里面试被问到 Java 内存模型happens-before规则,我直接绿脸!!!

Java内存模型(JMM)中的happens-before

Java内存模型之happens-before

Java内存模型之happens-before