Linux的編程接口書提到的方法用於與異步信號在一個多線程程序進行處理:處理異步信號在多線程程序
- 的所有線程屏蔽所有的異步信號的該過程 可能會收到。執行 的最簡單方法是在創建任何其他線程 之前,阻止 主線程中的信號。隨後創建的每個線程都將繼承線程的主要信號掩碼副本 。
- 創建一個單一的專用線程,接受使用的輸入信號
sigwaitinfo()
,sigtimedwait()
或sigwait()
。該方法的優點是 異步生成的信號是 同步接收。由於它接受 傳入信號,專用線程 可以安全地修改共享變量 (在互斥控制下)並呼叫 非異步安全功能。它也可以是 信號狀態變量,以及其他線程和進程通信 和同步機制 。
現在的問題:
-
當內核想傳遞它選擇內部處理任意線程的一個信號
- 。從哪裏可以知道將信號傳遞給專用線程?
- pthread API是非異步安全功能。那麼我們如何在信號處理程序中使用它們呢?
Sigaction不用於阻塞信號,請參閱sigprocmask和pthread_sigmask。 – 2017-01-30 02:27:42
@ToddFreed:相信與否,那實際上就是我的意思......修正;謝謝 – Nemo 2017-01-30 19:05:46