2014-02-27 41 views
2

假设我有一个不阻塞任何信号的多线程应用程序,并且有一个线程调用sigwait(),其掩码为SIGTERM。如果进程从外部收到SIGTERM,以下哪一项有保证?如果没有线程阻塞信号,并且一个线程在`sigwait()`中,是否有保证被阻塞的线程会接收下一个信号?

  1. 阻止在sigwait()上的线程将收到它。
  2. 上面的线程是只有线程,它会收到它。

我检查了man page,但它没有解决这些问题。

回答

0

至少为Linux:两个possiblities没有得到保证,如:

man 7 signal

的信号配置是每进程属性:在多线程应用程序,的处置所有线程的特定信号都是相同的。

因此,多于一个线程不会阻止SIGINT那些可能收到它。