Priorité forte à la lecturemoniteur LRprioFL = entier nblac, nbrac, nblatt, nbratt init 0 condition fl, fr init vide
procedure deb_ecr = si non (nbrac = 0 et nblac + nblatt = 0) alors fr.WAIT nbracc := 1. |
procedure deb_lect = nblatt++ si non (nbrac = 0) alors fl.WAIT ; fl.SIGNAL (je viens d'être réveillé, donc il faut que je réveille le suivant) |
procedure fin_ecr = nbracc := 0 si nblatt > 0 alors fl.SIGNAL sinon fr.SIGNAL. |
procedure fin_lect = nblac -- si nblatt + nblac = 0 alors fr.SIGNAL |
nbracc variant entre 0 et 1, on pourrait la remplacer par un booléen. |