多執行緒中處理訊號的執行緒是哪乙個?

2022-10-09 07:54:10 字數 522 閱讀 9409

程序收到訊號會被處理,但是處理訊號的執行緒是哪乙個呢?主線程,註冊訊號函式的執行緒,還是任意的子執行緒。

哪個執行緒收到的訊號,訊號處理函式就在哪個執行緒上面執行,和訊號函式是哪個執行緒註冊的無關。如果是其它程序發給當前程序的,那就都是在主線程處理。

1、建立兩個子執行緒,子執行緒1註冊訊號函式

2、主線程定時向子執行緒發訊號

3、在shell終端中手動給程式法訊號(ctrl+c)

#include#include#include#include#includevoid sighandler(int signo)

void* thread_func1(void* arg)

void* thread_func2(void* arg)

int main()

if (pthread_create(&tid2, null, (void*)thread_func2, "new thread:") != 0)

while(1)

return 0;

}

多執行緒下的訊號處理

參考apue 1.同乙個程序下的所有執行緒共享 訊號的處理方式,所以乙個執行緒改變對訊號的處理方式,那所有執行緒如果收到該訊號都會是那樣處理的 2.sigprocmask用於單執行緒的程序中阻止訊號傳送,但是在多執行緒的程序中並沒有定義 執行緒必須使用pthread sigmask.a.如果有的執行...

乙個多執行緒程式

這個程式會讓你深刻的體會時間片,執行緒的優先順序!建議多測試這個程式,一定要看下面的注。using system using system.collections.generic using system.text using system.threading namespace 乙個多執行緒程式 ...

乙個多執行緒程式

這個程式會讓你深刻的體會時間片,執行緒的優先順序!建議多測試這個程式,一定要看下面的注。using system using system.collections.generic using system.text using system.threading namespace 乙個多執行緒程式 ...