内存屏障(内存栅栏)

内存栅栏是这么一种技术:让一个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/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值