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


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

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

 

 

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

 

多線程進程有所不同:

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

 

 

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

 

 

              
         2.線程私有數據:
 
         多線程編程下。進程的全局變量通過存儲於共享數據區,實現為全部線程 共用。同一時候,線程還能夠有自己的全局變量,稱為線程的私有數據。

 

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

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

 

 

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

 

 

         線程理解至此。之后的進一步學習。會有更深入的體會。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM