多執行緒與訊號

2022-04-29 10:27:11 字數 1010 閱讀 1017

1. 每個執行緒都有自己的訊號遮蔽字

2. 每個執行緒都對同一訊號都共享乙個訊號處理函式。

3. 主線程設定了pthread_sigmask後,子執行緒將複製乙份設定好的訊號遮蔽字(之後可以更改)。

然後我們來看下執行緒和程序間的比較

子程序繼承父程序的屬性:

子執行緒繼承主線程的屬性:

實際使用者id,實際組id,有效使用者id,有效組id;

附加組id;

程序組id;

會話id;

控制終端;

設定使用者id標誌和設定組id標誌;

當前工作目錄;

根目錄;

檔案模式建立遮蔽字(umask);

訊號遮蔽和安排;

針對任一開啟檔案描述符的在執行時關閉(close-on-exec)標誌;

環境;連線的共享儲存段;

儲存對映;

資源限制;

程序中的所有資訊對該程序的所有執行緒都是共享的;

可執行的程式文字;

程式的全域性記憶體;

堆記憶體;

棧;檔案描述符;

訊號的處理是程序中所有執行緒共享的(注意:如果訊號的預設處理是終止該程序那麼即是把訊號傳給某個執行緒也一樣會將程序殺掉)

父子程序之間的區別:

子執行緒特有的:

fork的返回值(=0子程序);

程序id不同;

兩個程序具有不同的父程序id;

子程序的tms_utime,tms_stime,tms_cutime以及tms_ustime均被設定為0;

不繼承父程序設定的檔案鎖;

子程序的未處理鬧鐘被清除;

子程序的未處理訊號集設定為空集;

執行緒id;

一組暫存器值;

棧;排程優先順序和策略;

訊號遮蔽字;

errno變數;

執行緒私有資料;

多執行緒訊號學習

1 訊號的概念 是向程序傳送的軟體通知。訊號的生命週期 generate deliver,deliver的含義 deliver的含義 程序接收到訊號並採取行動。掛起的訊號的概念 已經generate 還沒有被deliver的訊號.2 訊號掩碼 的本質 訊號掩碼是乙個訊號集,程序要阻塞某些訊號可以通過...

QT 多執行緒訊號與槽(一)

1.乙個主介面 主線程 乙個次執行緒,次執行緒通過訊號向主線程傳遞遞增變數,主線程將它顯示出來 mythread.h include include class mythread public qthread mythread.cpp include mythread.h include mythr...

QT 多執行緒訊號與槽(二)

乙個主線程,乙個次執行緒,主線程向次執行緒傳送訊號 mythread.h include include class mythread public qthread mythread.cpp include mythread.h include mythread mythread void myth...