A. Utilisation d’un unique sémaphore en exclusion mutuelle (Mut)
Coté lecteur :
T Lire ()
Mut.P();
T info = RetirerInfo ();
Mut.V ();
return info;
Coté rédacteur :
void Ecrire (const T & info)
Mut.P();
PoserInfo (info);
Mut.V();
Montrer que l’on peut obtenir un interblocage de processus.
B. Utilisation de plusieurs sémaphores
La solution ci-dessous est inspirée de celle vue en cours, malheureusement elle n’est pas fonctionnelle. Dites pourquoi et corrigez la.
Indication : on donnera toujours priorité aux lecteurs par rapport aux rédacteurs.
Init : MutRedPresent = 0 ; MutRedEcr = 0 ; MutLect = 0;
Coté lecteur :
MutRedPresent.P ();
MutLect.P();
T info = RetirerInfo ();
MutLect.V ();
return info ;
Coté rédacteur :
MutRedEcr.P();
PoserInfo (info) ;
MutRedEcr.V();
MutRedPresent.V ();