[轉]c++多線程編程之pthread線程深刻理解

多線程編程之pthread線程深刻理解

 
        Pthread 是 POSIX threads 的簡稱,是POSIX的 線程標準
           前幾篇博客已經能給你初步的多線程概念。在進一步學習線程同步等多線程核心知識以前,需要對多線程深刻的理解。很是多人忽略或者回避這部份內容,直接的問題是學習者沒法把握多線程編程的內在原理,理解的層次太淺。

 

 

 
          1.進程資源:
           
         進程資源有存儲資源與其它資源。其它資源包括環境變量。地址,文件等。存儲資源。進程的內存分配,博客【C解析之三】C語言的內存分配具備很是好的參考價值。

 

多線程進程有所不一樣:編程

         靜態區:存儲全局變量和靜態變量
         堆區:動態分配區
上述靜態區。堆區以及其它資源統稱爲進程的共享資源。共享資源被該進程的所有線程所共享。
         線程堆:線程本身維護的堆
         線程棧:線程本身維護的棧
上述的線程堆,線程棧是每個線程獨有的資源。線程間相互獨立,不共享。當創建一個線程時。系統會爲線程分配堆棧。

 

 

                  
你可能已經發現,線程共享進程堆的同一時候。還本身維護一個堆棧。

 

 

              
         2.線程私有數據:
 
         多線程編程下。進程的全局變量經過存儲於共享數據區,實現爲所有線程 共用。同一時候,線程還可以有本身的全局變量,稱爲線程的私有數據。

 

愛思考的讀者可能會問,那線程的非全局變量在哪呢。別忘了非全局變量的空間在棧中哦。多線程

 
         3.線程消亡:
 
         線程消亡時,線程自由的線程堆棧會被釋放,歸還給系統,同一時候線程的私有數據也會被釋放。線程的共享資源。靜態區。共享的進程堆以及其它資源。由於這些資源是線程間共享的。故不會隨線程消亡而釋放。

 

 

         需要特別注意的是。線程堆與共享的進程堆之間的差別。

 

 

         線程理解至此。以後的進一步學習。會有更深刻的體會。
相關文章
相關標籤/搜索