Могу ли я использовать pthread_sigmask без потока? - PullRequest
1 голос
/ 03 февраля 2020

У меня есть общий код для двух исполняемых файлов, использующих pthread_sigmask. Один из исполняемых файлов имеет потоки pthread, а другой - только один процесс. Можно ли вызывать pthread_sigmask без потока или я должен использовать sigprocmask во втором случае?

1 Ответ

2 голосов
/ 03 февраля 2020

С posix pthread_sigmask :

Функция pthread_sigmask () должна проверять или изменять (или оба) маску сигнала вызывающего потока, независимо от количества потоков в процессе , Функция должна быть эквивалентна sigprocmask (), без ограничения на то, что вызов выполняется в однопоточном процессе.

В однопоточном процессе функция sigprocmask () должна проверять или изменять (или оба ) маску сигнала вызывающего потока.

From sigprocmask :

В однопоточном процессе функция sigprocmask () позволяет вызывающий процесс для проверки или изменения (или обоих) маски сигнала вызывающего потока.

.....

Использование функции sigprocmask () не определено в многопоточном обработать.

В начале каждый процесс имеет один поток, который запускает main(). sigprocmask() может быть запущен только в однопоточном процессе. pthread_sigmask() можно запустить в процессе с любым числом потоков.

Можно ли использовать pthread_sigmask без потока?

Да.

Можно ли вызывать pthread_sigmask без потока или мне следует использовать sigprocmask во втором случае?

Все нормально.

Вы пометили linux. Большинство linux используют glibc, а в glibc pthread_sigmask () вызывает тот же системный вызов rt_sigprocmask или только функцию sigprocmask () . Так что в glibc они делают то же самое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...