При просмотре кода кажется, что разработчик хочет приостановить выполнение потока, пока SIGRTMIN+1
не станет ожидающим потока ( sigwaitinfo (2) ). В то же время он не хочет, чтобы выполнение потока мешало другим сигналам (т. Е. Поток не должен реагировать на какие-либо сигналы, кроме SIGRTMIN+1
), поэтому он маскировал другие сигналы, используя следующую инструкцию:
//why do we need this?
pthread_sigmask(SIG_SETMASK, &signals, NULL);
Здесь следует отметить, что, хотя все сигналы замаскированы, кроме SIGRTMIN+1
с использованием вышеприведенного оператора, выполнение потока всегда склонно к SIGSTOP
и SIGKILL.