A voir également:
- Semaphores entre 2 processus
- Jdownloader 2 - Télécharger - Téléchargement & Transfert
- 2 comptes whatsapp - Guide
- Epson scan 2 ✓ - Forum Imprimante
- 2 ecran pc - Guide
- Scratch 2 gratuit - Télécharger - Éducatifs
5 réponses
AnaGraM
Messages postés
69
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
18 mai 2007
49
25 mai 2004 à 23:13
25 mai 2004 à 23:13
Si tu veux, j'ai un tas de sources ADA pour lecteurs/1 redacteur avec les semaphores et moniteurs (priorité lecteurs / priorite redacteur / sans priorité)
AnaGraM
Messages postés
69
Date d'inscription
lundi 4 août 2003
Statut
Membre
Dernière intervention
18 mai 2007
49
26 mai 2004 à 13:32
26 mai 2004 à 13:32
En fait, ADA c'est un langage de programmation. On utilise des tâches et il faut ensuite les synchroniser avec des sémaphores, moniteurs ou des RDV.
Avec des semaphores, sans priorité
Ici, il y a 3 lecteurs et 2 rédacteurs mais on peut en mettre plus. Les lecteurs peuvent lire le fichier en même temps, pas de lecture et d'écriture simultanée et pas d'écriture simultanée.
Sans priorité c'est parce que lorsque un lecteur demande à écrire puis un rédacteur demande à écrire, le lecteur lira avant que le rédacteur écrive. Ils passent dans l'ordre de leur demande.
J'ai d'autres exemples avec priorité lecteur et priorité rédacteur. Par exemple, priorité lecteur permet de faire passer tous les lecteurs qui veulent lire le fichier avant que les redacteurs puissent écrire, etc ....
Dis-moi d'abord si c'est ce que tu cherches. Si oui, je te passerai le reste.
@+
Avec des semaphores, sans priorité
Nblect : Integer:=0; SR: Sem_Binaire; mutex: Sem_Binaire; sem: Sem_Binaire; -- tache type d'un lecteur task type Lecteur (P : integer); task body Lecteur is begin loop Mutex.P; Nblect:=Nblect+1; if Nblect=1 then SR.P; end if; mutex.V; --Mettre ton code pour lire un fichier ici mutex.P; Nblect:=Nblect-1; if Nblect=0 then SR.V; end if; mutex.V; end loop; end; -- tache type d'un redacteur task type Redacteur (P : integer); task body Redacteur is begin loop sem.P; SR.P; --mettre ton code pour ecire dans le fichier ici SR.V; sem.V; end loop; end; Lect1 : Lecteur (p => 1); Red1 : Redacteur (p => 1); Lect2 : Lecteur (p => 2); Lect3 : Lecteur (p => 3); Red2 : Redacteur (p => 2);
Ici, il y a 3 lecteurs et 2 rédacteurs mais on peut en mettre plus. Les lecteurs peuvent lire le fichier en même temps, pas de lecture et d'écriture simultanée et pas d'écriture simultanée.
Sans priorité c'est parce que lorsque un lecteur demande à écrire puis un rédacteur demande à écrire, le lecteur lira avant que le rédacteur écrive. Ils passent dans l'ordre de leur demande.
J'ai d'autres exemples avec priorité lecteur et priorité rédacteur. Par exemple, priorité lecteur permet de faire passer tous les lecteurs qui veulent lire le fichier avant que les redacteurs puissent écrire, etc ....
Dis-moi d'abord si c'est ce que tu cherches. Si oui, je te passerai le reste.
@+
Salut, moi aussi j'apprend pour l'instant les semaphores en C.
j'apprécie les indications que vous avez suggérez. si oui, j'aimerai bien avoir le reste des exemples sur les sémaphores.
Merci d'avance
j'apprécie les indications que vous avez suggérez. si oui, j'aimerai bien avoir le reste des exemples sur les sémaphores.
Merci d'avance
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
25 mai 2004 à 23:42