線程共享哪些進程資源?獨占哪些資源?


線程獨占的資源

1. 線程運行的本質就是函數的執行,函數運行時的信息保存在棧幀中,包括函數的返回值、使用的局部變量、寄存器信息等,因此每個進程都有自己獨立的、私有的棧區

2. 程序計數器、函數運行使用的寄存器組的值也是線程私有的

3. 每個線程用戶獨立的線程ID、獨立的調度優先級、錯誤返回碼

線程共享的資源

1. 多個線程共享進程的代碼區,代碼區存放的是編譯后的可執行機器指令,即任何一個函數都可以放到線程中去執行

2. 多個線程共享進程的數據區,即任何一個線程都可以訪問全局變量和靜態變量

3. 多個線程共享進程的堆區,盡管棧區是線程的私有數據,但棧區沒有添加任何保護機制,一個線程的棧區對其他線程也是可見的

 

4. 動態鏈接庫:若一個程序是動態鏈接的,那么其地址空間中有一部分包含的就是動態鏈接庫,該部分也是被多個線程共享的

5. 文件:如果程序運行時打開了一些文件,那么進程地址空間中保存了打開的文件信息,進程打開的文件也屬於線程共享的資源

6. 線程共享當前工作目錄、以及用戶ID和組ID

參考文獻

(4條消息) 線程間到底共享了哪些進程資源?_程序員資源社區的博客-CSDN博客

(4條消息) 同一進程中線程的共享資源以及獨占資源_心海徐帆的博客-CSDN博客_線程獨占的資源


免責聲明!

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



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