variable: un mutex: m deux condition: Ce Cl deux compteur: Nbe=0 Nbl=0 debut_lire prendre(m) si Nbe>0 attendre(Cl,m) Nbl++; relacher(m) fin_lire prendre(m) Nbl--; Si (Nbl=0 ET Nbe>0) Signal (Ce) relacher(m) debut_ecrire prendre(m) Nbe++ si Nbl>0 attendre(Ce,m) relacher(m) fin_ecrire prendre(m) Nbe-- Si (Nbe>0) Signal(Ce) Sinon Signal(Cl) relacher(m)