Mutex - Zone critique et rendez-vous
By Guillaume Donars on Thursday, November 23 2006, 19:50 - Coding - Permalink
Petit pense bète sur ce concept très pratique, mais qui peut parfois s'oublier très facilement. Pour ceux qui ne connaissent pas, il s'agit de gérer une zone partagée entre différents processus, pour notre cas, il y en a 2, un lecteur et un rédacteur. Le mutex permet de protéger cette zone critique afin que le lecteur ne lise pas la donnée en même temps que le rédacteur y écrive une information. Nous avons également besoin de savoir quand est-ce que le rédacteur a modifié la donnée protégée, on utilise pour cela le concept du rendez-vous.
Comme convention:
- P(x) signifie que nous prenons le mutex, ici cette fonction sera bloquante (on ne progresse pas tant qu'on n'a pas reçu le mutex).
- V(x) signifie que nous relâchons le mutex.
Nous aurons besoin de 2 mutex: m1 et m2, ils sont tout les 2 initialisés à l'état "pris".
Processus 1: Le rédacteur
Ecriture dans la zone critique
V(m1)
P(m2)
V(m1)
P(m2)
Processus 2: Le lecteur
P(m1)
V(m2)
Lecture dans la zone critique
P(m1)
V(m2)
Voilà, ce n'était pas plus compliqué que ça ;)