多執行緒訊號學習

2021-06-02 14:37:46 字數 790 閱讀 4263

1 訊號的概念

是向程序傳送的軟體通知。

訊號的生命週期:generate deliver, deliver的含義

deliver的含義:程序接收到訊號並採取行動。

掛起的訊號的概念

已經generate

還沒有被deliver的訊號.

2 訊號掩碼 的本質

訊號掩碼是乙個訊號集,程序要阻塞某些訊號可以通過設定訊號掩碼。

訊號阻塞 和訊號忽略的區別

訊號忽略 忽略的訊號不會deliver給程序,該訊號會被丟棄。

訊號阻塞

對某個訊號設定阻塞後,該訊號不會被傳遞,指定解除阻塞後才會把傳遞。

3 訊號在多執行緒中的應用

訊號掩碼的作用:

4 訊號等待

pause  sigsupend 的區別 不理解

int sigwait(const sigset_t *restrict set, int *restrict signop);

sigwait函式將阻塞呼叫他的執行緒,直到收到它所監聽的訊號發生了,然後sigwait將其從未決佇列中取出(因為被阻塞了,所以肯定是未決了),但是有一點需要注意的是:它從未決佇列取出之後,並不影響那個被取出的訊號原來被阻塞的狀態。它所做的工作只有兩個:

第一,監聽被阻塞的訊號;第二,如果所監聽的訊號產生了,則將其從未決佇列中移出來。

5 雖然訊號處理程式是 程序範圍內的 ,但是執行緒可以設定自己的訊號掩碼。

pthread_sigmask

6 訊號,實現執行緒間同步

運用sigwait對阻塞訊號的監聽功能。

多執行緒與訊號

1.每個執行緒都有自己的訊號遮蔽字 2.每個執行緒都對同一訊號都共享乙個訊號處理函式。3.主線程設定了pthread sigmask後,子執行緒將複製乙份設定好的訊號遮蔽字 之後可以更改 然後我們來看下執行緒和程序間的比較 子程序繼承父程序的屬性 子執行緒繼承主線程的屬性 實際使用者id,實際組id...

多執行緒 訊號量

訊號量 semaphore類 建立帶指定許可數的訊號量 semaphore semaphore new semaphore 1 建立乙個許可的訊號量 訊號量用來限制訪問共享數資源的執行緒數。在訪問資源之前,執行緒必須從訊號量獲取許可,在訪問完資源後釋放訊號量。任務通過呼叫訊號量的acquire 方法...

qt 多執行緒 訊號槽

qt訊號多執行緒 當你connect的時候,型別為qt autoconnection就好了 如果slot在同一執行緒就是直接呼叫,如果slot在另外乙個執行緒就通過事件機制處理 在qt中,你的執行緒在呼叫exec函式後就進入了事件迴圈機制 這時,如果另外乙個執行緒傳送了乙個訊號過來 1 如果接收執行...