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