线程和信号
信号属于进程资源,多个线程共享信号。
线程内可以调用pthread_sigmask
线程内可以调用signwait(signset,opno)来专门处理信号
-----当前进程阻塞的信号集
-----专门的线程来处理信号
------signwait检查signset,如果有未挂起或阻塞的信号,那么就返回并令这些信号阻塞。为什么要阻塞呢?就是防止处理信号的线程错过信号。
当signwait返回前,会暂时在一个时间窗口内取消阻塞的信号集合,在时间窗口内会接受等待的信号到来。当信号到来时,signwait返回
opno就是等待的信号值。返回前会再次恢复阻塞的信号集合。
------常在一个线程内循环调用sigwait,专用线程处理信号,把异步信号进行同步的处理。信号就不会打断其它线程的处理。
硬件故障相关的信号,会发回给产生故障的线程,其它信号发给任何一个线程