1

我发现在 HPUX 上,SIGALRM 信号可以由系统创建,并在单线程应用程序中由进程正确捕获。但是,如果我在线程中设置 SIGALRM,则 SIGALRM 将不再发生。为什么?此问题仅在 HPUX 平台上出现,但在其他 UNIX 平台(solaris sparc、x86、Linux、AIX、Mac 和 Ubantu)上运行良好

请帮帮我!谢谢!

4

1 回答 1

-1

多线程环境中的信号处理:作为信号处理程序:对于所有 UNIX 平台,信号处理程序是在每个进程的基础上安装的。在多线程环境中,进程中的每个信号只有一个信号处理程序。为任何线程安装的最后一个信号处理程序对进程中的所有线程都有效。传递信号时调用处理程序。

同样SIGALRM是由接收它们的进程控制之外的事件生成的异步信号,并且在不可预测的时间到达。由于异步信号被传递给进程而不是线程,而不考虑正在执行的指令。这就是为什么SIGALRM不能在 thread on 中发生HPUX

这在 HP-UX 调度策略中;有HP-UX 的信号处理说明

于 2013-07-18T07:18:10.787 回答