網站首頁 教育 學前教育 精緻生活 飲食養生 命理 科普教育 金融 歷史 影視 數碼 熱門資訊
當前位置:生活百科站 > 精緻生活 > 

同一程序下的執行緒可以共享什麼

欄目: 精緻生活 / 釋出於: / 人氣:6.01K

同一程序下的執行緒可以共享datanbsp;sectionnbsp;和filenbsp;fd。nbsp;執行緒共享的內容包括:程序程式碼段、程序的共有資料(利用這些共享的資料,執行緒很容易的實現相互之間的通訊)、程序開啟的檔案描述符、訊號的處理器、程序的當前目錄和程序使用者ID與程序組ID。

同一程序下的執行緒可以共享什麼

執行緒獨有的內容包括:執行緒ID、暫存器組的值、執行緒的堆疊、錯誤返回碼、執行緒的訊號遮蔽碼。

每個執行緒都有自己的執行緒ID,這個ID在本程序中是唯一的。程序用此來標識執行緒。

由於執行緒間是併發執行的,每個執行緒有自己不同的執行線索,當從一個執行緒換到另一個執行緒上時,必須將原有的執行緒的暫存器集合的狀態儲存,以便將來該執行緒在被重新切換到時能得以恢復。

堆疊是保證執行緒獨立執行所必須的。執行緒函式可以呼叫函式,而被呼叫函式又是可以層層巢狀的,所以執行緒必須擁有自己的函式堆疊,使得函式呼叫可以正常執行,不受其它執行緒的影響。

同一程序下的執行緒可以共享什麼 第2張

由於同一個程序中有很多個執行緒在同時執行,可能某個執行緒進行系統呼叫後設定了errno值,而在該執行緒還沒有處理這個錯誤,另外一個執行緒就在此時被排程去投入執行,這樣錯誤值就有可能被修改。所以,不同的執行緒應該擁有自己的錯誤返回碼變數。

由於每個執行緒所感興趣的訊號不通,所以執行緒的訊號遮蔽碼應該由執行緒自己管理。但所有的執行緒都共享同樣的訊號處理器。