程式執行緒對比總結以及對於生產者消費者的場景分析

風是甜的你是我的發表於2018-06-26

程式是一個正在執行的程式,是在計算機上執行的程式例項,是能分配給處理器並由處理器執行的實體。程式資訊在Linux下被放在一個叫做task_struct的結構體裡。在多執行緒的情況下,程式通常被定義為資源分配的單位和保護的單位。

執行緒在Linux下也叫做輕量級程式,是程式執行的最小單位。

執行緒是存在於程式中,每個執行緒都有執行緒執行狀態,在執行時會儲存執行緒的上下文,具有獨立的執行棧,並且有用於每個執行緒區域性變數的靜態儲存空間,執行緒可以對所屬程式的的記憶體和資源進行訪問,也可以與同一個程式中的其他執行緒共享資源。

執行緒共享程式的地址空間與資料,當一個執行緒修改資料後,其他的程式會看到修改後的資料,執行緒相比較程式來說效能上佔有很大優勢。在一個已有的程式中建立一個全新程式的時間要少,因為建立程式會建立PCB,建立對應的地址空間,建立頁表等,但是對於執行緒來說就不需要建立了,因為它與所屬程式是共享程式地址空間的。相同的,銷燬的時候對於執行緒也比較容易銷燬,花費時間較少。執行緒也提高了不同執行程式間通訊的效率。

程式與執行緒的關係表示(摘自《作業系統精髓與設計原理》)


/////////////////////點此檢視執行緒的函式描述/////////////////////////

//////////////////點選開啟執行緒生產者消費者程式碼連結//////////////

相關文章