如果我有一个程序N
正在运行线程,并且N-1
它们使用 pthread_sigmask 阻止传递 SIGUSR1 信号:
int rc;
sigset_t signal_mask;
sigemptyset(&signal_mask);
sigaddset(&signal_mask, SIGUSR1);
rc = pthread_sigmask(SIG_BLOCK, &signal_mask, NULL);
if (rc != 0) {
// handle error
}
当操作系统(Linux,最近的内核)将 SIGUSR1 传递给进程时,它是否保证传递给未阻塞的线程?或者它是否可以,例如,尝试一些被阻塞线程的子集然后放弃?