多線程編程之pthread線程深入理解
Pthread
是 POSIX threads 的簡稱,是POSIX的
線程標准。
前幾篇博客已經能給你初步的多線程概念。在進一步學習線程同步等多線程核心知識之前,須要對多線程深入的理解。非常多人忽略或者回避這部分內容,直接的問題是學習者無法把握多線程編程的內在原理,理解的層次太淺。
1.進程資源:
靜態區:存儲全局變量和靜態變量
堆區:動態分配區
上述靜態區。堆區以及其它資源統稱為進程的共享資源。共享資源被該進程的全部線程所共享。
線程堆:線程自己維護的堆
線程棧:線程自己維護的棧
上述的線程堆,線程棧是每一個線程獨有的資源。線程間相互獨立,不共享。當建立一個線程時。系統會為線程分配堆棧。

你可能已經發現,線程共享進程堆的同一時候。還自己維護一個堆棧。
2.線程私有數據:
多線程編程下。進程的全局變量通過存儲於共享數據區,實現為全部線程 共用。同一時候,線程還能夠有自己的全局變量,稱為線程的私有數據。
愛思考的讀者可能會問,那線程的非全局變量在哪呢。別忘了非全局變量的空間在棧中哦。
3.線程消亡:
線程消亡時,線程自由的線程堆棧會被釋放,歸還給系統,同一時候線程的私有數據也會被釋放。線程的共享資源。靜態區。共享的進程堆以及其它資源。因為這些資源是線程間共享的。故不會隨線程消亡而釋放。
須要特別注意的是。線程堆與共享的進程堆之間的差異。
線程理解至此。之后的進一步學習。會有更深入的體會。