關於計算機中的每個線程爲何執行的順序具有不確定性分析

       這個我在前面講了:關於計算機 存儲器處理器  存在較大的差距。接下來我給我自己 也給看我這篇文章的你,分析一下,爲什麼計算機的每個線程執行的順序是具有不確定性的;

       由於計算機 存儲器處理存 在較大的差距:所以 計算機系統 不得不加入一層讀寫速度儘可能接近處理器運算速度的告訴高速緩存(高速緩存就是講需要運算的數據加載到高速緩存當中,讓運算更快執行),當運算結束的時候,在把緩存的數據 寫進內存。這麼做的好處就感覺是Java設計模式講的解耦規則,有點類似哈,進而減輕內存的讀寫壓力。

       當然這就引發了接下來的問題:緩存數據一致性。因爲CPU具有多核處理器,比如手機(8核處理器),每個處理器都有自己的高速緩存,當他們都共同運用一個主存器。{引深一點:多個處理器之間綁定一種協議來確定數據一致性}

       於是乎在協議的基礎上,處理器不會按照輸入的代碼進行順序執行,而是計算機爲了讓自身的資源儘可能的充分利用,進行了亂序執行,然後處理器會對計算之後的代碼進行重組,保證結果的正確性。所以在Java虛擬機即時編譯也採用了這樣 重排序優化

       

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