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
}
OS (Linux、最近のカーネル) が SIGUSR1 をプロセスに配信すると、ブロックされていないスレッドに配信されることが保証されますか? または、たとえば、ブロックされたスレッドのサブセットを試してからあきらめることができますか?