Linux中同一程序中的執行緒究竟共享哪些資源

2022-08-26 08:36:12 字數 844 閱讀 6630

執行緒共享的環境包括:程序**段、程序的公有資料(利用這些共享的資料,執行緒很容易的實現相互之間的通訊)、程序開啟的檔案描述符、訊號的處理器、程序的當前目錄和程序使用者id與程序組id。

程序擁有這許多共性的同時,還擁有自己的個性。有了這些個性,執行緒才能實現併發性。這些個性包括:

1.執行緒id

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

識執行緒。

2.暫存器組的值

由於執行緒間是併發執行的,每個執行緒有自己不同的執行線索,當從乙個線

程切換到另乙個執行緒上

時,必須將原有的執行緒的暫存器集合的狀態儲存,以便

將來該執行緒在被重新切換到時能得以恢復。

3.執行緒的堆疊

堆疊是保證執行緒獨立執行所必須的。

執行緒函式可以呼叫函式,而被呼叫函式中又是可以層層巢狀的,所以執行緒

必須擁有自己的函式堆疊,

使得函式呼叫可以正常執行,不受其他執行緒的影

響。4.錯誤返回碼

由於同乙個程序中有很多個執行緒在同時執行,可能某個執行緒進行系統呼叫

後設定了errno值,而在該

執行緒還沒有處理這個錯誤,另外乙個執行緒就在此時

被排程器投入執行,這樣錯誤值就有可能被修改。

所以,不同的執行緒應該擁有自己的錯誤返回碼變數。

5.執行緒的訊號遮蔽碼

由於每個執行緒所感興趣的訊號不同,所以執行緒的訊號遮蔽碼應該由執行緒自

己管理。但所有的執行緒都

共享同樣的訊號處理器。

6.執行緒的優先順序

由於執行緒需要像程序那樣能夠被排程,那麼就必須要有可供排程使用的參

數,這個引數就是執行緒的

優先順序。

**:

同一程序中線程共享資源

參考 chumojing的chinaunix部落格,執行緒共享的環境包括 程序 段 程序的公有資料 利用這些共享的資料,執行緒很容易的實現相互之間的通訊 程序開啟的檔案描述符 訊號的處理器 程序的當前目錄和程序使用者id與程序組id。不同的有 執行緒id,暫存器組的值,執行緒的堆疊,錯誤返回碼,執行...

同一程序中同一埠如何區分不同的Socket

為了區分不同應用程序間的網路通訊和連線,主要有 3個引數 通訊的目的ip位址 使用的傳輸層協議 tcp 或 udp 和使用的埠號。socket的原意是 插座 通過將這3個引數結合起來,與乙個 插座 socket繫結,應用層就 可以和傳輸層通過套接字介面,區分來自不同應用程式程序或網路連線的通訊,實現...

Linux程式設計常用的函式(一) 程序

總共分為12部分分別是 程序 執行緒 訊息佇列 訊號量集 共享記憶體 pgsql程式設計 mysql程式設計 網路程式設計 檔案訪問 標準i o 系統資料檔案和資訊 訊號 一 程序 1.程序id為0的程序通常是排程程序,常常被稱為交換程序 程序id為1的程序通常是init程序,在自舉過程結束時由核心...