Sémaphore lecteur rédacteur
Bonsoir,
je veux modifier le code suivant afin de limiter le nombre de lecteurs autorisés à un nombre donnée.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| Data: mutexEcriture : mutex initialisé à libre
Data: mutexFifo : mutex initialisé à libre
Data: mutexNbLect : mutex initialisé à libre
Data: entier : NbLect initialisé à 0
Procédure debutLecture()
begin
Prendre(mutexFifo) ;
Prendre(mutexNbLect) ;
nbLect nbLect + 1 ;
if nbLect = 1 then Prendre(mutexEcriture);
Liberer(mutexNbLect) ;
Liberer(mutexFifo) ;
end
Procédure finLecture()
begin
Prendre(mutexNbLect) ;
nbLect nbLect -1 ;
if nbLect = 0 then Liberer(mutexEcriture);
Liberer(mutexNbLect) ;
end
Procédure debutEcriture()
begin
Prendre(Fifo);
Prendre(mutexEcriture) ;
Liberer(mutexFifo) ;
end
Procédure finEcriture()
begin
Liberer(mutexEcriture) ;
end |
le code suivant permet de résoudre le problème classique du lecteur/rédacteur sans priorité (accès fifo), un groupe de lecteurs de taille quelconque peut accéder à la section critique, mon objectif est de limiter la taille du groupe à un nombre k par exemple.
Merci de m'aider :(
A+