Discussione:Monitor (sincronizzazione)

Da Wikipedia, l'enciclopedia libera.
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.