內存屏障和volatile內存語義的實現

趁週末,把之前的書拿出來,再翻一番,順便作個筆記:java

內存屏障:用來控制和規範cpu對內存操做的順序的cpu指令。編程

內存屏障列表:併發

1.loadload:確保「前者數據裝載」先於「後者裝載指令」;rest

2.storestore:確保「前者數據」先於「後者數據」刷入系統內存,且,「前者刷入系統內存的數據」對「後者是可見的」;內存

3.loadstore:確保「前者裝載數據」先於「後者刷新數據到系統內存」;基礎

4.storeload:確保「前者刷入系統內存」的數據對「後者加載數據」是可見;cpu

 

volatile的內存語義的(JVM)實現策略:數據

1.在每一個volatile寫操做前,會插入一個storeload屏障;volatile

2.在每一個volatile寫操做後,會插入一個storeload屏障;系統

3.在每一個volatile讀操做後,會插入一個loadstore屏障和loadload屏障。

 

 

其上爲java併發編程方向的理論基礎知識。

相關文章
相關標籤/搜索