我正在寻找一个多线程应用程序,其中一个线程在继续之前等待另一个线程发出信号。根据{{3}},由于竞争条件,sigsuspend
不是MT安全的。根据{{3}},在这些情况下应使用sigwait
。我想知道为什么。
sigsuspend (const sigset_t *mask)
实际上更改了进程的信号掩码,这会影响所有线程。
sigwait (const sigset_t *set, int *sig)
只需等待set
中的一个指示信号,而不用更改线程(或进程)的信号掩码。
这种理解是否正确?如果是这样,sigwait
如何阻止而不更改信号掩码?