Linux的编程接口书提到的方法用于与异步信号在一个多线程程序进行处理:处理异步信号在多线程程序
- 的所有线程屏蔽所有的异步信号的该过程 可能会收到。执行 的最简单方法是在创建任何其他线程 之前,阻止 主线程中的信号。随后创建的每个线程都将继承线程的主要信号掩码副本 。
- 创建一个单一的专用线程,接受使用的输入信号
sigwaitinfo()
,sigtimedwait()
或sigwait()
。该方法的优点是 异步生成的信号是 同步接收。由于它接受 传入信号,专用线程 可以安全地修改共享变量 (在互斥控制下)并呼叫 非异步安全功能。它也可以是 信号状态变量,以及其他线程和进程通信 和同步机制 。
现在的问题:
-
当内核想传递它选择内部处理任意线程的一个信号
- 。从哪里可以知道将信号传递给专用线程?
- pthread API是非异步安全功能。那么我们如何在信号处理程序中使用它们呢?
Sigaction不用于阻塞信号,请参阅sigprocmask和pthread_sigmask。 – 2017-01-30 02:27:42
@ToddFreed:相信与否,那实际上就是我的意思......修正;谢谢 – Nemo 2017-01-30 19:05:46