Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1350 connectés 

  FORUM HardWare.fr
  Programmation
  C

  synchronisation de processus sans lien de parenté

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

synchronisation de processus sans lien de parenté

n°949328
souliane
Posté le 08-01-2005 à 21:20:54  profilanswer
 

Bonjour, je voudrais savoir s'il existe un mécanisme équivalent au mutex pour synchroniser des processus qui n'ont _aucun_ lien de parenté (à la limite, ils ont le même nom c'est à dire à dire qu'il s'agit de plusieurs instances du même processus mais je ne sais pas si ca va aider).
 
Parsque la mémoire partagée c'est bien mais on perd l'atomicité et on pourrait avoir un conflit non ? Entre le temps de récupérer la valeur de la variable, de la tester, et avant de la décrémenter un autre processus passe par derrière et hop on est fouttu, non ?
 
Merci !

mood
Publicité
Posté le 08-01-2005 à 21:20:54  profilanswer
 

n°949331
SBAM
Best recording of rach 3.
Posté le 08-01-2005 à 21:34:05  profilanswer
 

Tu peux faire des pipes entre tes process ou des sockets.

n°949337
souliane
Posté le 08-01-2005 à 21:47:58  profilanswer
 

Tu veux que quand un processus veut acceder a la ressource il lit le pipe et si y'a rien il attend, sinon il fait son job et quand il a finit il remet un caractere dans le pipe ? ... Ouais pourquoi pas !

n°949346
SBAM
Best recording of rach 3.
Posté le 08-01-2005 à 22:06:35  profilanswer
 

souliane a écrit :

Tu veux que quand un processus veut acceder a la ressource il lit le pipe et si y'a rien il attend, sinon il fait son job et quand il a finit il remet un caractere dans le pipe ? ... Ouais pourquoi pas !


 
Peut-etre qu'en precisant un peu plus ce que tu comptes faire, on pourrait mieux t'aiguiller (le pipe nomme reste unidirectionelle, si tu as besoin d'une reponse, tu dois passer par des sockets unix).

n°949355
souliane
Posté le 08-01-2005 à 22:22:46  profilanswer
 

Ben en fait je dois faire un mini-shell et les differentes instances du programme doivent se partager un historique qui est "stocké" dans un segment de memoire partagée. La premiere instance cree le segment et y copie le contenu du fichier historique, la derniere instance met a jour le fichier et detruit le segment. Ca se sont les consignes qu'il ne faut pas toucher.
 
Les processus doivent donc lire et ecrire regulierement dans le segment, qui contient :
 
- la representation en memoire du fichier
- les nombres de commandes (lignes) et de caracteres
- eventuellement le nombre d'instances ?
 
Ca c'est moi qui l'a voulu ainsi, je peux eventuellement changer un peu mais pas trop mais parsque je n'aurai pas le temps de tout refaire !
 
:)

n°949361
souliane
Posté le 08-01-2005 à 22:49:58  profilanswer
 

Sinon pour les pipes nommes alors j'en fait deux qui me servent de mutex sur la shm que je garde comme ci-dessus (en utilisant bcopy je peux y stocke mes int meme si je caste l'adresse que renvoie shmat en char *).
 
Pour les sockets je prefere eviter vu que je connais encore moins.

n°949399
slvn
Posté le 09-01-2005 à 00:25:55  profilanswer
 

-> il faut que tu utilies des semaphores nommés.
(cherche sur google named semaphore)
 
c'est comme un semaphore normal, ou un mutex.
sauf qu'il ont d'une maniere ou d'une autre un lien au systeme de fichier. Ce qui leur donne une portée globale, inter-processus.
 
Sylvain

n°949402
souliane
Posté le 09-01-2005 à 00:51:29  profilanswer
 

Ahhh, merci pour le tuyau ! Je vais regarde ca.

n°950199
minimoke
beep beep
Posté le 10-01-2005 à 17:40:54  profilanswer
 

c pas un tuyau (pipe) c un semaphore
ok je sort c t tres mauvais


---------------
  ____
n°950273
docmaboul
Posté le 10-01-2005 à 19:35:14  profilanswer
 

souliane a écrit :

Ben en fait je dois faire un mini-shell et les differentes instances du programme doivent se partager un historique qui est "stocké" dans un segment de memoire partagée. La premiere instance cree le segment et y copie le contenu du fichier historique, la derniere instance met a jour le fichier et detruit le segment. Ca se sont les consignes qu'il ne faut pas toucher.
 
Les processus doivent donc lire et ecrire regulierement dans le segment [...]


 
Si vous êtes sur une plateforme qui le supporte, autant utiliser un mutex stocké dans le segment avec l'attribut PTHREAD_PROCESS_SHARED (avec le setpshared qui va bien). Vous pouvez aussi utiliser un rwlock plutôt qu'un mutex histoire que ce soit joli.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  synchronisation de processus sans lien de parenté

 

Sujets relatifs
Synchronisation buffer[Javascript] Afficher le texte lorsque l'on clique sur un lien
Erreur de lien .h (débutant)gestion des signaux processus
Crypter un lienlien vers une frame
Recuperer l'URL sur erreur 404 --> pour lien mortpb lien interne
[Apache] Impossible de killer le processusLien interne avec un Button sur un WebBrowser
Plus de sujets relatifs à : synchronisation de processus sans lien de parenté


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR