深入理解計算機系統 第12章 基於執行緒的併發程式設計

2022-07-01 10:27:09 字數 1658 閱讀 1282

多程序:每個流單獨的程序。私有的位址空間,共享資料困難。

io多路復用:所有流在乙個程序上,共享位址空間,利用io多路復用技術來呼叫邏輯流。

執行緒:(1)執行緒就是執行在程序的上下文中的邏輯流,執行緒由核心自動排程。

(2)執行緒都有自己的執行緒上下文,包括執行緒id,執行緒棧,棧指標,程式計數器,通用目的暫存器,條件碼。

(3)所有執行在乙個程序的執行緒都共有虛擬位址空間。

執行緒是程序和io多路復用的結合:

(1)同程序一樣,執行緒由核心自動排程,核心識別執行緒id。

(2)同io一樣,執行緒執行在同一程序的上下文中,共享程序虛擬位址空間的整個內容,包括堆,**,資料,共享庫,開啟檔案。

12.3.1 執行緒執行模型:

(1)從某一時刻主線程建立乙個對等執行緒,那麼從這個時候開始,兩個執行緒併發的執行。

執行緒與程序的不同:

(2)執行緒的相互之間的切換要快得多。

(3)執行緒不是和程序一樣按照父子程序來組織的,執行緒建立的是對等執行緒。

執行緒池:

(4)同乙個程序相關的執行緒組成乙個對等的執行緒池。

(5)乙個執行緒可以殺死它的任何的對等執行緒,也可以等待它的終止。每個對等執行緒之間可以共享資料。

12.3.2 posix執行緒

12.3.3 建立執行緒

(1)pthread_create函式

(2)pthread_self函式

12.3.4 終止執行緒

(1)當頂層的執行緒例程返回時,會隱式的終止

(2)pthread_exit函式,顯式的終止

(3)某個對等執行緒呼叫unix的exit函式,則終止程序以及與程序相關的所有執行緒。

(4)pthread_cancel函式

12.3.5 **已終止執行緒資源

12.3.6 分離執行緒

12.3.7 初始化執行緒

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

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

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

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

深入理解計算機系統

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