欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

内存屏障(内存栅栏) java 

程序员文章站 2022-05-21 13:24:01
...

内存栅栏是这么一种技术:让一个CPU处理单元中的内存状态对其他的CPU处理单元可见。

在底层内存栅栏是一组指令,一般包括Store Barrier、Load Barrier和Full Barrier。

不同的CPU架构有不同的实现方式,以X86为例:Store Barrier,强制所有在store屏障指令之前的store指令,都在该store屏障指令执行之前被执行,并把store缓冲区的数据都刷到主存
Load Barrier,强制所有在load屏障指令之后的load指令,都在该load屏障指令执行之后被执行,并且一直等到load缓冲区被该CPU读完才能执行之后的load指令。
Full Barrier,复合了load和store屏蔽指令。

高级语言是怎么应用底层机制的:Java内存模型中volatile变量在写操作之后会插入一个store屏障,在读操作之前会插入一个load屏障。一个类的final字段会在初始化后插入一个store屏障,来确保final字段在构造函数初始化完成并可被使用时可见。




参考:
http://www.cnblogs.com/LoveJenny/archive/2011/05/29/2060718.html
http://blog.chinaunix.net/uid-9185047-id-445168.html
http://zh.wikipedia.org/w/index.php?title=%E5%86%85%E5%AD%98%E5%B1%8F%E9%9A%9C&redirect=no
http://ifeve.com/memory-barriers-or-fences/
相关标签: java