Semaphores entre 2 processus

Fermé
brice - 25 mai 2004 à 22:48
 walid - 9 déc. 2010 à 12:19
bonjour et merci d'avance a qui voudra bien m'aider

j'ai un probleme que voici :

je ne trouve aucune aide sur internet pour savoir comment creer et utiliser des semaphores entre 2 processus qui accedent a un meme fichier texte.
si quelqu'un pouvait m'envoyer un code permettant cela , j'en serais tres heureux.
et je travaille sous linux.
A voir également:

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
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é)
1
thenice Messages postés 1 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 25 mai 2004
25 mai 2004 à 23:42
je ne sais pas ce que veut dire ADA mais je veux bien voir tes sources stp.
0
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
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é


   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.

@+
0
merci AnaGraM
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
donné le programe de sémaphore entre deux processeur
0