Se um processo Unix (Posix) receber um sinal, um manipulador de sinal será executado.
O que acontecerá com ele em um processo multithread? Qual thread recebe o sinal?
Na minha opinião, a API de sinal deve ser estendida para lidar com isso (ou seja, o segmento do manipulador de sinal deve poder ser determinado), mas, procurando informações na rede, só encontrei chamas de um ano na lista de discussão do kernel do linux e em fóruns diferentes. Pelo que entendi, o conceito de Linus diferia do padrão Posix, e primeiro foi criada uma camada compat, mas agora o Linux segue o modelo posix.
Qual é o estado atual?
linux
signals
posix
multithreading
peterh - Restabelecer Monica
fonte
fonte
Respostas:
A entrada no POSIX em " Geração e entrega de sinal " em "Justificativa: Informações gerais sobre interfaces do sistema" diz
No
signal(7)
manual em um sistema Linux:E em
pthreads(7)
:Do
pthreads(3)
manual em um sistema OpenBSD (como exemplo de uma abordagem alternativa):(No momento, não estou ciente de como isso é tratado quando vários threads estão sendo executados simultaneamente em uma máquina com vários processadores)
A implementação mais antiga do LinuxThread dos encadeamentos POSIX apenas permitia que encadeamentos distintos fossem direcionados por sinais. Em
pthreads(7)
um sistema Linux:fonte