信号处理程序运行时的线程状态

时间:2010-11-12 19:14:16

标签: multithreading signals

假设一个多线程应用程序,其中定义了信号处理程序。

现在,如果一个信号被传递到PROCESS,并且调用了信号处理程序 - 我怀疑在期间信号处理程序运行期间其他线程会发生什么。他们是否继续奔跑,好像什么都没发生或者他们在那段时间被停职......或者......?

如果有人可以告诉我为什么要证明答案的合理性?

2 个答案:

答案 0 :(得分:4)

specification非常清楚信号和线程如何相互作用:

  

为进程生成的信号应该传递给进程内的其中一个线程,这些线程在调用sigwait()函数时选择该信号或​​者没有阻止信号的传递。

当信号传递到一个线程时,其他线程不受影响(并继续运行)。

答案 1 :(得分:1)

线程是独立的:从一个线程到另一个线程的信号不会影响任何其他线程。原因是因为它们是独立的。影响其他线程的唯一原因是,如果相关线程的信号处理程序以某种方式与其他线程交互。