Bonsoir,

je veux modifier le code suivant afin de limiter le nombre de lecteurs autorisés à un nombre donnée.

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
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+