volatile實現細節-JVM層面+CPU層面

volatile可以保證多線程訪問的變量的可見性以及禁止指令重排序。

JVM層面的實現細節:

     StoreStoreBarrier          LoadLoadBarrier

     volatile寫操作                volatile操作

     StoreLoadBarrier           LoadStoreBarrier 

CPU層面的實現細節:

是採用lock 彙編指令操作,lock add dword ptr [rsp],0h

爲了更好的理解volatile,需要了解下CPU緩存的知識;

CPU緩存的出現主要是爲了解決CPU運算速度與內存讀寫速度不匹配的矛盾;常用的CPU內部都有L1緩存、L2緩存有些CPU架構還存在L3緩存。也就是線程的工作內存通常包含:寄存器、L1緩存、L2緩存、L3緩存。

CPU–>CPU緩存–>主內存之間讀寫關係
CPU–>CPU緩存–>主內存之間讀寫關係標題

 

上面部分是自己的一些總結。

具體的詳情細節,還是前輩整理的更好。共勉學習!

原文地址http://www.cnblogs.com/xrq730/p/7048693.html,轉載請註明出處,謝謝

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章