【C/C++多线程编程之五】pthread线程深入理解
多線程編程之pthread線程深入理解
? ? ??Pthread是 POSIX threads 的簡稱,是POSIX的線程標準。
? ? ? ? ??前幾篇博客已經能給你初步的多線程概念,在進一步學習線程同步等多線程核心知識之前,需要對多線程深入的理解。很多人忽略或者回避這部分內容,直接的問題是學習者無法把握多線程編程的內在原理,理解的層次太淺。
? ? ? ? ??1.進程資源:
? ? ? ? ? ?
? ? ? ? ?進程資源有存儲資源與其他資源。其他資源包含環境變量,地址,文件等。存儲資源,進程的內存分配,博客【C解析之三】C語言的內存分配具有很好的參考價值。多線程進程有所不同:
? ? ? ? ?靜態區:存儲全局變量和靜態變量
? ? ? ? ?堆區:動態分配區
上述靜態區,堆區以及其他資源統稱為進程的共享資源。共享資源被該進程的所有線程所共享。
? ? ? ? ?線程堆:線程自己維護的堆
? ? ? ? ?線程棧:線程自己維護的棧
上述的線程堆,線程棧是每個線程獨有的資源,線程間相互獨立,不共享。當建立一個線程時,系統會為線程分配堆棧。
? ? ??? ? ? ? ? ??
你可能已經發現,線程共享進程堆的同時,還自己維護一個堆棧。
? ? ? ? ? ? ??
? ? ? ? ?2.線程私有數據:
? ? ? ? ?多線程編程下,進程的全局變量通過存儲于共享數據區,實現為所有線程 共用。同時,線程還可以有自己的全局變量,稱為線程的私有數據。愛思考的讀者可能會問,那線程的非全局變量在哪呢,別忘了非全局變量的空間在棧中哦。
? ? ? ???3.線程消亡:
? ? ? ? ?線程消亡時,線程自由的線程堆棧會被釋放,歸還給系統,同時線程的私有數據也會被釋放。線程的共享資源,靜態區,共享的進程堆以及其他資源,由于這些資源是線程間共享的,故不會隨線程消亡而釋放。
? ? ? ? ?需要特別注意的是,線程堆與共享的進程堆之間的差異。
? ? ? ? ?線程理解至此,之后的進一步學習,會有更深入的體會。
?
來自 <https://blog.csdn.net/lovecodeless/article/details/24468107>
?
總結
以上是生活随笔為你收集整理的【C/C++多线程编程之五】pthread线程深入理解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 线下实战2.0
- 下一篇: 2020年快手美妆行业数据价值报告