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


趁周末,把以前的書拿出來,再翻一番,順便做個筆記:

內存屏障:用來控制和規范cpu對內存操作的順序的cpu指令。

內存屏障列表:

1.loadload:確保“前者數據裝載”先於“后者裝載指令”;

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

3.loadstore:確保“前者裝載數據”先於“后者刷新數據到系統內存”;

4.storeload:確保“前者刷入系統內存”的數據對“后者加載數據”是可見;

 

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

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

2.在每個volatile寫操作后,會插入一個storeload屏障;

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

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM