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