Semaphores entre 2 processus

brice -  
 walid -
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.

5 réponses

  1. AnaGraM Messages postés 72 Statut Membre 50
     
    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
    1. thenice Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
       
      je ne sais pas ce que veut dire ADA mais je veux bien voir tes sources stp.
      0
  2. AnaGraM Messages postés 72 Statut Membre 50
     
    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
  3. steveprog
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

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