【发布时间】:2010-11-12 19:14:15
【问题描述】:
假设一个多线程应用程序,其中定义了一个信号处理程序。
现在,如果将信号传递给 PROCESS,并调用信号处理程序 - 我怀疑在信号处理程序运行期间其他线程会发生什么。他们是否继续运行,就好像什么都没发生一样,或者他们在这段时间内被暂停......或......?
如果有人能告诉我为什么要证明答案是正确的?
【问题讨论】:
假设一个多线程应用程序,其中定义了一个信号处理程序。
现在,如果将信号传递给 PROCESS,并调用信号处理程序 - 我怀疑在信号处理程序运行期间其他线程会发生什么。他们是否继续运行,就好像什么都没发生一样,或者他们在这段时间内被暂停......或......?
如果有人能告诉我为什么要证明答案是正确的?
【问题讨论】:
specification 非常清楚信号和线程如何交互:
为进程生成的信号应准确地传送到进程中正在调用选择该信号的 sigwait() 函数或没有阻止信号传送的线程之一。
由于信号仅传递给一个线程,其他线程不受影响(并继续运行)。
【讨论】:
线程是独立的:从一个线程到第二个线程的信号不会影响任何其他线程。为什么是因为他们是独立的。它会影响其他线程的唯一原因是相关线程的信号处理程序是否以某种方式与其他线程交互。
【讨论】: