Bonsoir,
je veux modifier le code suivant afin de limiter le nombre de lecteurs autorisés à un nombre donnée.
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Merci de m'aider
A+
Partager