2
假设我有一个不阻塞任何信号的多线程应用程序,并且有一个线程调用sigwait()
,其掩码为SIGTERM
。如果进程从外部收到SIGTERM
,以下哪一项有保证?如果没有线程阻塞信号,并且一个线程在`sigwait()`中,是否有保证被阻塞的线程会接收下一个信号?
- 阻止在
sigwait()
上的线程将收到它。 - 上面的线程是只有线程,它会收到它。
我检查了man page,但它没有解决这些问题。
假设我有一个不阻塞任何信号的多线程应用程序,并且有一个线程调用sigwait()
,其掩码为SIGTERM
。如果进程从外部收到SIGTERM
,以下哪一项有保证?如果没有线程阻塞信号,并且一个线程在`sigwait()`中,是否有保证被阻塞的线程会接收下一个信号?
sigwait()
上的线程将收到它。我检查了man page,但它没有解决这些问题。
至少为Linux:两个possiblities没有得到保证,如:
的信号配置是每进程属性:在多线程应用程序,的处置所有线程的特定信号都是相同的。
因此,多于一个线程不会阻止SIGINT
那些可能收到它。