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

C++ Discussion :

[synchronisation] synchro entre plusieurs process


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Par défaut [synchronisation] synchro entre plusieurs process
    Bonjour.

    je travaille sur un programme qui me pose un problème de synchro.

    J'ai un processus père qui peut lancer d'autres exe de manière séquentielle ( quand un processus est fini, un autre continue, puis un autre etc ... ) car ils travaillent sur une ressource partagée ( un fichier )

    donc en fait on lance tous les processus et on utilise un mutex pour les synchroniser sur les acces à la ressource partagée.

    Le problème c'est qu'il faut etre robuste sur l'éventualité que le processus père meure et que quand même quand les autres exes fassent leur traitement de manière synchrone. Donc le mutex ne peut pas etre un objet du processuys père. IL faudrait un espèce de mutex système.

    Y a t il un moyen de faire une telle synchro en c++ sous windows ?

    Merci d'avance.

    PS : au pire on a pensé à se servir d'un fichier qu'on locke en l'ouvrant pour se servir de point de synchro mais c'est pas super propre...

  2. #2
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Bonjour, pour que le mutex survive en cas de mort du process père, un mutex nommé est la solution je pense.

    Celui-ci ne sera détruit que si plus aucune référence n'existe sur lui, enfin il me semble.

    Je l'ai ai pas mal utilisé pour du code cross-process, mais jamais dans le cas de la mort du processus père.

    Cependant, je suis sûr que ça va marcher. En effet, contrairement à un mutex anonyme qui nécessite de maintenir le handle par le process père, pour un mutex nommé il suffit que les processus fils connaissent son nom

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Même un mutex anonyme existe après la mort du père, sous Windows, il me semble : Il ne disparait que quand le dernier handle sur lui est fermé...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre émérite Avatar de Caine
    Inscrit en
    Mai 2004
    Messages
    1 028
    Détails du profil
    Informations personnelles :
    Âge : 53

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 028
    Par défaut
    Oui effectivement
    Multiple processes can have handles of the same mutex object, enabling use of the object for interprocess synchronization. The following object-sharing mechanisms are available:

    · A child process created by the CreateProcess function can inherit a handle to a mutex object if the lpMutexAttributes parameter of CreateMutex enabled inheritance.
    · A process can specify the mutex-object handle in a call to the DuplicateHandle function to create a duplicate handle that can be used by another process.
    · A process can specify the name of a mutex object in a call to the OpenMutex or CreateMutex function.



    Use the CloseHandle function to close the handle. The system closes the handle automatically when the process terminates. The mutex object is destroyed when its last handle has been closed.
    Le mutex nommé est surtout utile entre process sans lien de parenté. Car dans ce cas, il me semble que le handle n'est pas garanti. Enfin je peux me tromper.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 151
    Par défaut
    Impécable !!

    merci à vous deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Synchronisation entre deux process
    Par seni404 dans le forum VHDL
    Réponses: 2
    Dernier message: 03/01/2013, 20h07
  2. synchronisation entre plusieurs graphiques
    Par yrtera dans le forum Silverlight
    Réponses: 6
    Dernier message: 04/11/2011, 10h12
  3. Réponses: 9
    Dernier message: 27/02/2011, 14h49
  4. Réponses: 0
    Dernier message: 30/03/2010, 11h04
  5. Synchronisation entre plusieurs base SQL Server
    Par vivoli12 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 19/05/2007, 13h47

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