多執行緒之間共享的資源有哪些

2021-07-25 05:24:12 字數 615 閱讀 2595



程序是資源分配的基本單位;執行緒是系統排程的基本單位。

平時我們寫的程式都是作為執行緒執行的;程序可以看做是包括一系列執行緒和資源的統稱;乙個程序至少包括乙個

執行緒(主線程,進入main函式時產生的);在其中可以建立其它執行緒,也可以不建立。

同一程序間的執行緒究竟共享哪些資源呢,而又各自獨享哪些資源呢?

共享的資源有

a. 堆  

由於堆是在程序空間中開闢出來的,所以它是理所當然地被共享的;因此new出來的都是共享的(16位平台上分全域性堆和區域性堆,區域性堆是獨享的)

b. 全域性變數 它是與具體某一函式無關的,所以也與特定執行緒無關;因此也是共享的

c. 靜態變數雖然對於區域性變數來說,它在**中是「放」在某一函式中的,但是其存放位置和全域性變數一樣,存於堆中開闢的.bss和.data段,是共享的

d. 檔案等公用資源  

這個是共享的,使用這些公共資源的執行緒必須同步。win32 提供了幾種同步資源的方式,包括訊號、臨界區、事件和互斥體。

獨享的資源有

a. 棧 棧是獨享的

b. 暫存器  

這個可能會誤解,因為電腦的暫存器是物理的,每個執行緒去取值難道不一樣嗎?其實執行緒裡存放的是副本,包括程式計數器pc

執行緒之間共享的資源有哪些

同一程序間的執行緒究竟共享哪些資源呢,而又各自獨享哪些資源呢?共享的資源有 a.堆 由於堆是在程序空間中開闢出來的,所以它是理所當然地被共享的 因此new出來的都是共享的 16位平台上分全域性堆和區域性堆,區域性堆是獨享的 b.全域性變數 它是與具體某一函式無關的,所以也與特定執行緒無關 因此也是共...

執行緒之間共享與獨享的資源

程序是資源分配的基本單位 執行緒是系統排程的基本單位。平時我們寫的程式都是作為執行緒執行的 程序可以看做是包括一系列執行緒和資源的統稱 乙個程序至少包括乙個 執行緒 主線程,進入main函式時產生的 在其中可以建立其它執行緒,也可以不建立。同一程序間的執行緒究竟共享哪些資源呢,而又各自獨享哪些資源呢...

關於JAVA多執行緒之間的資料共享

在網上查了資料,說類的例項變數是多執行緒共享的。經過實驗為什麼不是呢?請看下面的 package test public class threaddemo extends thread public static void main string args 上面的 我生成了五個執行緒。每個執行緒啟動...