1. 程式人生 > >記憶體一致性模型和記憶體屏障的學習

記憶體一致性模型和記憶體屏障的學習


磕叨

因為大學沒學過java,都是學C++的,工作時陰差陽錯地走歪了,現在成了一個寫業務程式碼的程式猿,平時工作多寫java,一部分golang和js,能讓我走歪了也不太走不太差的原因大概是因為大學所學的編譯原理和後來自己在圖書館所學的程式語言正規化(函式正規化和OO),還有DDD吧。

但其實我多語言的特性瞭解得非常模糊的,而且這個東西隨著語言工具的新版演進有所捨棄和新增,所以最近決定複習下編譯原理,然後系統的學習下jvm(原始碼),也算一個進階的必經之路吧,為什麼選jvm,因為java寫業務程式碼,還是思路挺暢順的,另外據說jvm是現在能見到的最好的vm(如果是最好,那java為什麼沒有async/await呢)。

好了,本篇要說的是記憶體一致性模型,因為要了解一下基本的概念才好繼續深入vm底層,在看JMM時提到一個有意思的東西---記憶體屏障,以前只知道他的作用,保證多執行緒執行環境下變數的狀態符合預期結果。記憶體一致性模型不是有java才關注的,現在的多核計算機程式設計基本都應該會面臨記憶體一致性問題。

(網文很多,這個權當學習的筆記,加深下印象)


起因

在晶片設計的領域,在單芯主頻提高慢慢地越來越難,然後某一刻走向了多核時代(