深入理解計算機系統 第12章 多執行緒中共享變數

2022-07-01 10:27:09 字數 848 閱讀 2902

多執行緒程式中的共享變數:

乙個執行緒是共享的當且僅當多個執行緒引用這個變數的某個例項。

12.4.1 執行緒儲存器模型

(1)暫存器是不共享的,而虛擬儲存器總是共享的

(2)執行緒的棧儲存在虛擬位址空間的棧區域,並且通常被相應的執行緒獨立的訪問。

(3)但執行緒棧是不對其他執行緒設防的。如果乙個執行緒以某種方式得到其他執行緒棧的指標,那麼他就可以讀寫這個棧

的任何部分了。

12.4.2 將變數對映到儲存器。

全域性變數:

(1)全域性變數是定義在函式之外的變數。

(2)在執行時,虛擬儲存器的讀寫區域只包含全域性變數的乙個例項,任何執行緒都可以引用。

本地自動變數:

(1)就是區域性變數,定義在函式內部但是沒有加static的變數。

(2)每個執行緒都包含了它自己所有的本地自動變數的乙個例項,即使所有執行緒共有乙個例程是也是如此。

本地靜態變數:

(1)定義在函式內部加static的區域性變數

(2)和全域性變數效果一樣,只有乙個例項。

12.4.3 共享變數

(1)當且僅當它的乙個例項被乙個以上執行緒引用。

(2)本地自動變數也能被共享的。

《深入理解計算機系統》 第1章 計算機系統漫遊

4.執行hello程式 最近重啟了寫部落格,都說念念不忘必有迴響。自從上一遍部落格,到現在已經過去了快兩年的時間。在這期間一直在想著什麼時候寫個部落格呀,什麼時候再摸著鍵盤一點點的碼字啊,心裡一直在想,直到現在,終於有了行動。看著乙個乙個的字,隨著鍵盤的敲擊,一串串躍然於螢幕之上,心裡有說不出來的平...

深入理解計算機系統之第6章

1.了解基本的儲存技術,2.程式設計師需要理解儲存器層次結構,因為其對應用程式的效能有巨大影響。3.理解區域性性原理,縮短程式執行時間。區域性性通常有兩種不同的形式 時間區域性性和空間區域性性。在乙個具有良好時間區域性性的程式中,被引用過一次的儲存器位置很可能在不遠的將來再被多次引用。在乙個具有良好...

深入理解計算機系統

關鍵路徑是在迴圈的反覆執行中形成的資料相關鏈。迴圈展開是一種程式變換,通過增加每次迭代計算的元素的數量,減少迴圈的迭代次數。重新結合變換能夠減少計算中關鍵路徑上操作的數量,通過更好地利用功能單元的流水線能力得到更好的效能。浮點運算不保證是可結合的,通常迴圈展開和並行地累積在多個值中,是提高程式效能的...