С 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
они делают то же самое.