首頁 > 常見問題 > 主體

同一個行程中的執行緒不共享的部分是什麼

發布: 2019-10-26 13:06:03
原創
14651 人瀏覽過

同一個行程中的執行緒不共享的部分是什麼

同一個行程中的執行緒不共享的部分是執行緒的堆疊。

線程共享的環境包括:進程代碼段、進程的公有數據(利用這些共享的數據,線程很容易的實現相互之間的通訊)、進程打開的文件描述符、信號的處理器、進程的目前目錄和進程用戶ID與進程組ID。  

進程擁有這許多共通點的同時,也擁有自己的個性。有了這些個性,線程才能實現並發性。這些個性包括:

1、執行緒ID

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

2、暫存器群組的值

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

3、執行緒的堆疊

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

4、錯誤回傳碼

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

5、執行緒的訊號屏蔽碼

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

6、執行緒的優先權

由於執行緒需要像行程一樣能夠被調度,那麼就必須要有可供調度使用的參數,這個參數就是執行緒的優先權。

以上是同一個行程中的執行緒不共享的部分是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板