Jeśli proces uniksowy (Posix) odbierze sygnał, uruchomi się procedura obsługi sygnału.
Co się z tym stanie w procesie wielowątkowym? Który wątek odbiera sygnał?
Moim zdaniem interfejs API sygnału powinien zostać rozszerzony, aby sobie z tym poradził (tzn. Wątek modułu obsługi sygnału powinien być w stanie określić), ale szukając informacji w sieci, znalazłem tylko całoroczne płomienie na liście mailingowej jądra Linuksa i na różne fora. Jak zrozumiałem, koncepcja Linusa różniła się od standardu Posix i najpierw zbudowano warstwę kompatybilności, ale teraz Linux podąża za modelem posix.
Jaki jest obecny stan?
linux
signals
posix
multithreading
peterh - Przywróć Monikę
źródło
źródło
Odpowiedzi:
Wpis w POSIX na temat „ Generowanie i dostarczanie sygnału ” w „Uzasadnienie: Interfejsy systemowe Informacje ogólne” mówi
Z
signal(7)
instrukcji w systemie Linux:I w
pthreads(7)
:Z
pthreads(3)
instrukcji w systemie OpenBSD (jako przykład alternatywnego podejścia):(Obecnie nie wiem, jak to się robi, gdy wiele wątków jest wykonywanych jednocześnie na komputerze wieloprocesorowym)
Starsza implementacja wątków POSIX dla LinuxThread pozwalała na sygnały tylko dla pojedynczych wątków. Z
pthreads(7)
systemu Linux:źródło