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

  FORUM HardWare.fr
  Programmation
  C

  thread mutex et mémoire partagée

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

thread mutex et mémoire partagée

n°914615
gauthier_l​a
Posté le 04-12-2004 à 13:18:30  profilanswer
 

Bonjour,
 
je voudrais mettre en place un mécanisme de wait/notify dans un prog. J'utilise dc des mutex posix couplés avec des threads conditions.
J'ai un fichier .c qui encapsule tout ce mécanisme et offre comme primitives de manipulations un waitEvt() et un notifyEvt() (à travers le .h)
Dans un autre fichier, le main implémente 2 threads, l'un va invoquer la primitve wait, l'autre la prmitive notifiy : tout se déroule bien.
Maitenant si je sépare mes deux threads en deux processus (2 mains koi !), ca marche plus. Ces deux mains font un include du fichier.h de gestion des mutex et des cond.
Je vois bien que je suis un train d'appliquer des threads alors qu'à priori je ne fais pas de la mémoire partagée, mais quand je suis l'exécution : l'adresse du mutex est bien la même.
 
Ca serait surment plus propre de faire de l'IPC, mais pkoi ca ne marche pas comme ca.
Qqun a une idée ?

mood
Publicité
Posté le 04-12-2004 à 13:18:30  profilanswer
 

n°914639
Lam's
Profil: bas.
Posté le 04-12-2004 à 13:44:57  profilanswer
 

L'adresse a l'air d'être la même car chaque processus a son propre espace d'adressage (le processeur faisant la conversion vers l'adresse physique). En pratique, il te faudra utiliser de l'IPC pour faire ça, car les mutex sont uniquement utilisés pour faire du multi-threads.
 
Pourquoi pas utiliser un kill tout bête, et l'attendre avec un pause() ou un sigpause()...
 
(D'ailleurs, c'est plutôt une variable conditionnelle que tu viens de nous décrire là.)

n°914855
gauthier_l​a
Posté le 04-12-2004 à 18:38:26  profilanswer
 

bon je suis passé à de l'ipc, grrr, ca marche tjrs pas. La je comprends vraiment plus.

n°915162
hoov
Posté le 05-12-2004 à 16:45:15  profilanswer
 

J'ai pas tres bien suivi, mais :
L'utilité des thread, c'est de partager un meme espace de donnée d'un processus.
Donc un main, un processus, plusieurs thread.
 
Si tu modifi ton programme, et crée 2 processus, il n'y a plus aucun partage de donnée, ton mutex n'est plus commun, quelque soit son adresse "virtuelle" !
 
Apparemment, tu veux juste synchroniser 2 processus, et dans ce cas, l'ipc est la solution.
Comme le dit Lam's, utilise des signaux, SIGUSR1 par exemple, redefinir le handler etc...
 
a+

n°915660
AlphaZone
Posté le 06-12-2004 à 13:04:58  profilanswer
 

Ou alors l'utilisation de SEMAPHORE est très bien aussi ;)

n°1002641
alvoryx
Posté le 06-03-2005 à 17:22:11  profilanswer
 

hoov a écrit :


 
Si tu modifi ton programme, et crée 2 processus, il n'y a plus aucun partage de donnée, ton mutex n'est plus commun, quelque soit son adresse "virtuelle" !
 
 
a+


 
lol ça c'est la meilleure de l'année ..."2 processus -> plus aucun partage de données"... à la base le mutex s'inscrit quand même dans la logique des sémaphores il me semble et un sémaphore ça sert quand même bien à synchroniser plusieurs ps... mutex-> sémaphore -> inter process communication et qui dit ipc dit partage de données
 
edit : sous la norme posix, en utilisant un sémaphore nommé, 2 processus distincts (et pas un étant fils de l'autre) peuvent bien communiquer entre eux !


Message édité par alvoryx le 06-03-2005 à 18:11:27
n°1003206
docmaboul
Posté le 07-03-2005 à 08:08:11  profilanswer
 

gauthier_la a écrit :

bon je suis passé à de l'ipc, grrr, ca marche tjrs pas. La je comprends vraiment plus.


 
regardez toujours si pthread_condattr_setpshared et si pthread_mutexattr_setpshared sont implémentées sur votre plateforme. Si c'est le cas, il vous suffit d'utiliser correctement ces appels et de mettre les données partagées entre les threads (conditions et mutexes compris) dans de la shared pour que cela marche entre des processus sans plus de modifs.


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

  thread mutex et mémoire partagée

 

Sujets relatifs
thread en parallele[Class] Constructeur et allocation de mémoire.
[C] thread sur SUN et sur linuxproblème désallocation mémoire (résolu)
Taille mémoire des énumérations[C++] conteneur stl & éléments-objets "thread-safe"
Problème Thread en javaTaille en mémoire d'un booléen
arreter un select bloquant depuis un autre threadpurger la memoire
Plus de sujets relatifs à : thread mutex et mémoire partagée


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