2013-07-18 29 views
1

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

请帮助我!谢谢!

回答

-1

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

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

这是在HP-UX调度策略中;有Signal Processing Notes of HP-UX

+0

非常感谢!但为什么它可以在其他Unix上工作?如何解决问题? –

+0

既然如此,如何在HPUX上设置线程计时器?没门? –

相关问题