IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Partage de mutex entre 2 processus !


Sujet :

Linux

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut Partage de mutex entre 2 processus !
    Bonjour a tous !

    Je voudrais savoir si c'est possible de partager un mutex entre 2 processus, pour cela, j'ai crée un segment mémoire dans un processus, et l'autre processus accedera a ce segment mémoire pour voir quand le mutex est lock !

    Pour faire tout cela, j'ai utilise une certaine structure à mettre dans le segment mémoire, et c'est aussi dans cette structure que je place le mutex !!
    Quand le premier processus cree le segment mémoire, tout va bien, je met meme une valeur dans la structure pour voir si l'autre processus sait la lire, et il sait la lire convenablement ! Mais par contre, l'autre processus arrive a locke le mutex meme si normalement il devrait blocker et attendre que le mutex se delock !!

    Voici les différents :

    http://rafb.net/paste/results/RSY9AD21.html

    le code du processus qui cree le segment memoire :

    http://rafb.net/paste/results/ispOEB10.html

    et le code du processus qui doit utilise le segment memoire deja cree

    http://rafb.net/paste/results/9Inzrd78.html

    Si quelqu'un a une idee de ou se situe le problème, qu'il n'hésite pas...

    Merci d'avance

    Dans le header.h se situe les méthodes que j'ai " reimplementé" pour utiliser les segments mémoire, ainsi que tous les includes necessaires pour compiler et executer les programmes !
    A la compilation tout se passe bien, c'est juste a l'execution que je comprends pas pourquoi l'aurte processus ne block par sur le mutex !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Je ne crois pas qu'on puisse jouer avec un mutex dans un segment de mémoire partagée.

    Par contre, on peut utiliser des mutex nommés, qui eux sont partagés. Ou bien, des sémaphores nommés binaires.


    PS: Tu aurais pu préciser la plate-forme: Il a fallu que je regarde dans tes sources pour savoir si c'était pour unixoïde ou Win32!

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    désolé pour la plateforme !!

    J'utilise Linux avec gcc !

    Qu'entend tu par mutex nomé ?
    je ne crois pas en avoir entendu parler !
    Une petite précision, je suis obligé d'utiliser les mutex posix, c'est a dire avec les appels :


    pthread_mutex_lock

    et unlock qui va avec !!

    Si tu parle de simplement initialiser le mutex avec :

    pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER;

    j'ai essaye aussi cela dans un segment mémoire, et apparement a la compilation il arrette deja pas moyen...

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ben, je ne sais pas où j'avais vu ça, ça devait être une extension non-POSIX.

    Pas de bol, les mutex POSIX sont locaux à un processus, et à mon avis ce n'est pas la mémoire partagée qui va résoudre le problème. Tu n'as pas le choix, pour communiquer entre deux processus, il faut utiliser des IPC (Inter-Process Communication).

    Et pour tenir le rôle des mutex, il n'y a que les sémaphores binaires.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 15
    Points
    15
    Par défaut
    ok et bien je tenterai ca tantot alors...

    En tout cas, j'avais fait un test, et apres un "fork" , le processus fils savait bien partagé son mutex (posix) , c'est à dire que si un le lockait, l'autre devait attendre qu'il le deblocke, enfin je verifierai encore pour être sur !

    Je vous tiens au courant en tout cas, ca pourra sûrement servir à d'autre personne

Discussions similaires

  1. Partage de mémoire entre processus
    Par Didj7 dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 25/05/2008, 23h33
  2. Réponses: 11
    Dernier message: 22/10/2007, 16h06
  3. partage memoire entre 2 processus
    Par gudul dans le forum Delphi
    Réponses: 1
    Dernier message: 12/09/2006, 13h43
  4. Partage d'une variable entre les processus fils
    Par Mehdi Feki dans le forum Linux
    Réponses: 7
    Dernier message: 09/01/2005, 13h34
  5. Partage de blocs mémoire entre 2 processus
    Par rolkA dans le forum Windows
    Réponses: 6
    Dernier message: 18/11/2003, 19h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo