[OSy] Chovani mutexu

Dalibor Straka dast at panelnet.cz
Thu Nov 1 17:08:27 CET 2007


Ahoj,

On Thu, Nov 01, 2007 at 04:59:44PM +0100, Viktor Masicek wrote:
> Dobry den.
> 
> Rovnou k veci. Mam mutex a vlakna A,B,C. Vlakno A zamkne mutex, B,C se
> pokusi o zamknuti a zablokuji se. Co se stane, kdyz ted vlakno A umre?
> 
> (1) Nic, proste umre a vlakna B,C zustanou uspana naveky. Proste chyba
> programatora, ze to tak blbe udelal.
> 
Podle me je toto spravne chovani. Jedina mozna akce, kterou lze jeste
udelat je zabit programatora.

> (2) Pri zabijeni vlakna A se zavola 'mutrex_up' na zminovany mutex a
> tim se napriklad B odblokuje a zablokovane zustane jen C. To by v
> dusledku vyzadovalo drzet si seznam mutexu u kazdeho vlakna nebo
> pripadne projit vsechny mutexy a porovnavat id killovaneho vlakna s
> vlastnikem mutexu.
> 
Bohuzel clovek nevi v jake fazi rozvrtani struktur A vyhnilo. Pokud
vlakno skonci s uzavrenym mutexem, jeste lze panic() a cely to zastavit.

-- Dalibor Straka




More information about the NSWI004 mailing list