美文网首页
内存屏障

内存屏障

作者: SinX竟然被占用了 | 来源:发表于2017-09-26 10:07 被阅读0次

内存屏障(Memory Barrier,或有时叫做 内存栅栏,Memory Fence)是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。Java编译器也会根据内存屏障的规则禁止重排序。

内存屏障可以被分为以下4种类型

  • LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。

  • StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Store1的写入操作对其它处理器可见。

  • LoadStore屏障:对于这样的语句Load1; LoadStore; Store2,在Store2及后续写入操作被刷出前,保证Load1要读取的数据被读取完毕。

  • StoreLoad屏障:对于这样的语句Store1; StoreLoad; Load2,在Load2及后续所有读取操作执行前,保证Store1的写入对所有处理器可见。它的开销是四种屏障中最大的。在大多数处理器的实现中,这个屏障是个万能屏障,兼具其它三种内存屏障的功能。

有的处理器的重排序规则较严,无需内存屏障也能很好的工作,Java编译器会在这种情况下不放置内存屏障。
Java编译器会这样使用内存屏障。


这里写图片描述

相关文章

  • leveldb源码学习--skiplist

    Skiplist原理 内存屏障 内存屏障,也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,是CPU或编译器...

  • Java的final关键字的内存语义

    概念介绍: 1.内存屏障: 内存屏障(Memory Barier,或者有时叫做内存栅栏,Memory Fence)...

  • 内存屏障在CPU、JVM、JDK中的实现

    前言 内存屏障(英语:Memory barrier),也称内存栅栏,内存栅障,屏障指令等,是一类同步屏障指令,它使...

  • 什么是内存屏障?

    内存屏障:是一种CPU质量,用于控制特定条件下的重排序和内存可见性问题。又称:内存栅栏 内存屏障作用: 阻止屏障两...

  • 内存屏障

    内存屏障(Memory Barrier,或有时叫做 内存栅栏,Memory Fence)是一种CPU指令,用于控制...

  • 内存屏障

  • 内存屏障

    内存屏障(Memory barrier) 为什么会有内存屏障 每个CPU都会有自己的缓存(有的甚至L1,L2,L3...

  • 内存屏障

    内存屏障的作用 保证数据的可见性我们知道,内存中的数据除了在内存中的副本,还有可能在各个核的CPU中,当某个核修改...

  • 内存屏障

    我们看到这个词语的时候觉得很高端,但是本质很简单,就是指定==事件先后执行的顺序== 一、意义 想要了解内存屏障,...

  • 内存屏障

    以下截图及相关信息,均来源于马士兵公开课中 内存屏障 屏障指的是什么?屏障指的是一种特殊的指令(例如:barrie...

网友评论

      本文标题:内存屏障

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