内存屏障(内存栅栏)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 内存屏障(内存栅栏)

内存屏障(内存栅栏)

 2015/5/2 22:07:50  可爱的小狗  程序员俱乐部  我要评论(0)
  • 摘要:内存栅栏是这么一种技术:让一个CPU处理单元中的内存状态对其他的CPU处理单元可见。在底层内存栅栏是一组指令,一般包括StoreBarrier、LoadBarrier和FullBarrier。不同的CPU架构有不同的实现方式,以X86为例:StoreBarrier,强制所有在store屏障指令之前的store指令,都在该store屏障指令执行之前被执行,并把store缓冲区的数据都刷到主存LoadBarrier,强制所有在load屏障指令之后的load指令,都在该load屏障指令执行之后被执行
  • 标签:内存

内存栅栏是这么一种技术:让一个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/
上一篇: 黑马程序员_内部类 下一篇: 没有下一篇了!
发表评论
用户名: 匿名