多執行緒程式設計之pthread執行緒深入理解

2022-08-15 16:42:15 字數 1270 閱讀 5549

不同的平台和作業系統上 程序和執行緒的實現機制不完全一致  但是一般來說執行緒棧都是獨立的 只要得到位址就可以相互訪問

pthread是 posix threads 的簡稱,是posix的執行緒標準

前幾篇部落格已經能給你初步的多執行緒概念,在進一步學習執行緒同步等多執行緒核心知識之前,需要對多執行緒深入的理解。很多人忽略或者迴避這部分內容,直接的問題是學習者無法把握多執行緒程式設計的內在原理,理解的層次太淺。

1.程序資源:

程序資源有儲存資源與其他資源。其他資源包含環境變數,位址,檔案等。儲存資源,程序的記憶體分配,部落格【c解析之三】c語言的記憶體分配具有很好的參考價值。多執行緒程序有所不同:

靜態區:儲存全域性變數和靜態變數

堆區:動態分配區

上述靜態區,堆區以及其他資源統稱為程序的共享資源。共享資源被該程序的所有執行緒所共享。

執行緒堆:執行緒自己維護的堆

執行緒棧:執行緒自己維護的棧

上述的執行緒堆,執行緒棧是每個執行緒獨有的資源,執行緒間相互獨立,不共享。當建立乙個執行緒時,系統會為執行緒分配堆疊。

你可能已經發現,執行緒共享程序堆的同時,還自己維護乙個堆疊。

2.執行緒私有資料:

多執行緒程式設計下,程序的全域性變數通過儲存於共享資料區,實現為所有執行緒 共用。同時,執行緒還可以有自己的全域性變數,稱為執行緒的私有資料。愛思考的讀者可能會問,那執行緒的非全域性變數在哪呢,別忘了非全域性變數的空間在棧中哦。

3.執行緒消亡:

執行緒消亡時,執行緒自由的執行緒堆疊會被釋放,歸還給系統,同時執行緒的私有資料也會被釋放。執行緒的共享資源,靜態區,共享的程序堆以及其他資源,由於這些資源是執行緒間共享的,故不會隨執行緒消亡而釋放。

需要特別注意的是,執行緒堆與共享的程序堆之間的差異。

執行緒理解至此,之後的進一步學習,會有更深入的體會。

C C 多執行緒程式設計之四 終止pthread執行緒

多執行緒程式設計之終止pthread執行緒 pthread是posix threads的簡稱,是posix的執行緒標準。終止執行緒似乎是多執行緒程式設計的最後一步,但絕不是本系列教材的結束。執行緒建立到執行緒終止,希望先給讀者乙個關於多執行緒程式設計的整體認識。1.終止pthread執行緒 pthr...

pthread 多執行緒

多執行緒程式指的是在同乙個程式中多個執行流併發執行,它們共享程序的同乙個位址空間,分別完成相應的任務,並通過共享位址空間等方式完成執行緒間通訊,cpu按照時間片輪轉等方式對執行緒進行切換和排程。通常而言,執行緒共享的程序資源包括 linux中線程的建立依賴於lpthread.so 庫,建立乙個thr...

C C 多執行緒程式設計之六 pthread互斥量

多執行緒程式設計之執行緒同步互斥量 pthread是posix threads的簡稱,是posix的執行緒標準。pthread執行緒同步指多個執行緒協調地,有序地同步使用共享資源。c c 多執行緒程式設計之五 pthread執行緒深入理解中講述到,多執行緒共享程序資源,乙個執行緒訪問共享資源需要一段...