[so] tema3

Cosmin Arad so@atlantis.cs.pub.ro
Sat, 22 Nov 2003 02:29:56 -0800 (PST)


--- Ioana Cutcutache <ioana_c@pcnet.ro> wrote:
>     Problemele ce trebuiesc rezolvate folosind
> monitorul presupun rularea la infinit a firelor de
> executie (de exemplu la bounded buffer si
> producatorii si consumatorii ruleaza la infinit).
> Deci terminarea acestor programe s-ar face cu
> CTRL-C, si in acest caz nu se mai apeleaza functia
> de distrugere a monitorului. Este ok asa?
>     Chiar daca se face un handler pt. semnalul
> ctrl-c, oricum nu ar merge destroy-ul pt. ca practic
> ar mai fi fire blocate in monitor.
 
Poti sa tii in proces un flag global de oprire pe care

sa-l testeze fiecare thread inainte de o noua operatie
de citire/scriere. Initial flagul este false adica
toata lumea lucreaza.
In handlerul pt Ctrl+C poti seta flagul respectiv si
astfel toate threadurile se vor opri gracefully.

Dupa ce le-ai asteptat pe toate (in main) poti
distruge monitorul. Bineinteles threadurile vor parasi
monitorul inainte sa se termine.

Cosmin


__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree