Discussione:Monitor (sincronizzazione)
Vai alla navigazione
Vai alla ricerca
Implementazione dei monitor tramite semafori
x<cond>.wait: begin C<cond> <- C<cond> + 1; V(MUTEX); P(S<cond>); C<cond> <- C<cond> - 1; end;
x<cond>.signal: begin if C<cond> > 0 then V(S<cond>) else V(MUTEX) end;
Questa è la soluzione proposta dai libri ma secondo me è sbagliata perché dopo un wait si esce dalla regione critica, visto che i semafori mettono il prossimo processo in stato di pronto.