Если процесс Unix (Posix) получает сигнал, будет запущен обработчик сигнала.
Что будет с этим в многопоточном процессе? Какой поток получает сигнал?
На мой взгляд, API-интерфейс сигналов должен быть расширен, чтобы справиться с этим (то есть поток обработчика сигналов должен быть в состоянии быть определенным), но, ища информацию в сети, я обнаружил пламя на протяжении всего года в списке рассылки ядра Linux и в разные форумы. Как я понял, концепция Линуса отличалась от стандарта Posix, и сначала был создан некоторый уровень Compat, но теперь Linux следует модели Posix.
Каково текущее состояние?
linux
signals
posix
multithreading
Петер - Восстановить Монику
источник
источник
Ответы:
Запись в POSIX « Генерация и доставка сигналов » в «Обоснование: общие сведения о системных интерфейсах» гласит:
Из
signal(7)
руководства по системе Linux:И в
pthreads(7)
:Из
pthreads(3)
руководства по системе OpenBSD (как пример альтернативного подхода):(В настоящее время я не знаю, как это обрабатывается, когда несколько потоков выполняются одновременно на многопроцессорной машине)
Более старая реализация LinuxThread потоков POSIX позволяла направлять сигналы только по отдельным потокам. Из
pthreads(7)
системы Linux:источник