java与内存屏障

 

内存屏障的作用是对重排序做出限定。

内存屏障有四种, LoadLoad、StoreStore、LoadStore、StoreLoad。

组成元素有两种, Load、Store。

Load的含义是加载,Load时会优先读cpu高速缓存(即线程私有的栈),若缓存失效,才去内存中读取。

而Store的含义是装载,Store的目的地直指内存(即堆),所以,普通变量的写并不算是Store, 因为它们写的目的地是高速缓存,而不是内存。

内存屏障中,StoreLoad格外特殊, 它的意思是 “Store happens-before Load”, 言外之意, StoreLoad之前的写 应在 其之后的读操作前,将当前高速缓存中的数据载入内存。

 

posted @ 2019-08-03 22:36  安大地  阅读(222)  评论(0)    收藏  举报