Страницы

Поиск по вопросам

пятница, 12 июля 2019 г.

Обработка сигналов в многопоточной программе

Всем добрый день! Господа профессионалы, разрешите пожалуйста мои сомнения : многопоточной программе приходят сигналы SIGCHLD от порожденных процессов, и хотелось бы, чтобы их обработка произовдилось в основном потоке выполнения, а не в дочерних. В литературе оговаривается, что сигнал доставляется одному произвольному потоку, в то же время есть функция pthread_sigmask(), которая может заблокировать доставку сигнала конкретному потоку. Могу ли я, установив блокировку для данного сигнала в дочерних потоках, добиться того, чтобы обработку осуществлял только основной поток, или это вызовет потерю приходящих сигналов?


Ответ

Да, можете. Именно так и надо делать. Обработчик сигнала вызывается в произвольном "незаблокированном" потоке.

Комментариев нет:

Отправить комментарий