Thready a signaly
Alexandr Malusek
malusek na hroch.ujf.cas.cz
Pátek Září 4 19:57:46 CEST 1998
Petr.Novotny na antek.cz (Petr Novotny) writes:
> 1. Lze poslat signal jednotlivemu threadu nebo signal dostava proces?
Pokud to spravne chapu, tak v ramci POSIXu se signal posila celemu
procesu, pricemz signal je zpracovan prvnim threadem, ktery signal
neblokuje.
V Linuxu jsou thready implementovany pomoci Linux-specifickeho
systemoveho volani clone(). To umoznuje vytvorit proces, ktery s
rodicem sdili specifikovane zdroje. Linuxove thready jsou proto z
hlediska jadra samostatne procesy s vlastnim PIDem a melo by byt mozne
jim posilat signaly.
> 2a. Pokud signal zpracovava thread, je mozne, aby kazdy thread mel
> vlastni handler?
Neni to mozne, signal handler je sdilen vsemi thready, viz
napr. pthread_signal(3).
> 2b. Pokud signal zpracovava proces (nezavisle na threadech), je mozne
> poznat, ktereho threadu se signal (treba SIGSEGV) tyka?
Obecne nevim, v nekterych pripadech to asi pujde. Otazka se mi zda
prilis nekonkretni.
> Pokud je na 2a nebo 2b zaporna odpoved, myslim, ze fork() umoznuje
> vyrazne lepsi kontrolu nez multithreading...
To se mi zda jako prilis zavseobecnujici tvrzeni. POSIX threads toho
mnoho neumoznuji (napr. aby thread A pozastavil, a pak opet spustil
thread B), ale jsou i jine implementace threadu. Napr. Mach je od
zakladu navrzen pro praci s thready, nikoliv procesy.
--
A. Malusek (malusek na ujf.cas.cz)
UJF AV CR
Další informace o konferenci Linux