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 de n threads


Sujet :

C

  1. #1
    elm
    elm est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Par défaut Synchronisation de n threads
    Bonjour, c'est encore moi

    J'ai lu la page d'Emmanuel Delahaye sur les threads POSIX, mais après réflexion, je ne vois toujours pas comment résoudre un problème de synchronisation pour plus de deux threads. Mon problème est le suivant:

    J'ai des threads qui travaillent en parallèle (while(found==FALSE)), quand un a trouvé la solution, il met found à TRUE pour passer à la suite. Mais je souhaiterais que ces threads s'attendent à la sortie de la boucle avant de passer à la suite.

    Comment faire? Je pensais compter les threads sortis de la boucle et les mettre en attente, le dernier envoyant un signal aux autres, mais je ne vois pas comment résoudre ça sans problème de concurrence (pour les compter il faudrait mettre un mutex pour qu'ils se comptent un à un, mais du coup ils ne peuvent pas se mettre en attente sans bloquer les autres ou risquer de rester bloqués eux-mêmes).

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par elm
    J'ai des threads qui travaillent en parallèle (while(found==FALSE)), quand un a trouvé la solution, il met found à TRUE pour passer à la suite. Mais je souhaiterais que ces threads s'attendent à la sortie de la boucle avant de passer à la suite.
    Le principe des threads est d'être asynchrones. On peut les rendre synchrones en bidouillant comme je l'ai indiqué. Si tu veux de la synchronisation, il faut peut être autre chose que des threads... C'est peut être un problème de conception. Que veux-tu faire exactement ?

  3. #3
    elm
    elm est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 20
    Par défaut
    Merci, je comprends mieux pourquoi j'ai du mal à essayer de les synchroniser!

    En fait dans le cadre de ce projet, on me demande d'utiliser des threads (machine quadri-processeurs supportant 32 threads en parallèle) pour rechercher des mots de passe à partir d'une liste de hashes fournis par la fonction crypt.

    J'ai donc des threads qui génèrent les valeurs de crypt de chaque chaîne de caractères de taille 8 ou moins. Ils bouclent tant qu'ils ne trouvent pas un crypt identique à la ligne en cours. Quand un d'eux a trouvé, il avertit les autres pour les faire sortir de la boucle.

    A présent je me rends compte qu'en plaçant des locks intelligemment, il semble y avoir moyen de régler le problème sans vouloir les synchroniser... Si certains sont encore dans la boucle de recherche, ce n'est pas grave tant qu'un thread est sorti (au moins celui qui a trouvé le mot de passe) et qu'il réinitialise les valeurs proprement...

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

Discussions similaires

  1. Synchronisation d'un thread
    Par chris28200 dans le forum Concurrence et multi-thread
    Réponses: 6
    Dernier message: 02/06/2010, 20h47
  2. [Thread] [synchronised] utilisation sans thread
    Par philippe13 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 01/03/2007, 09h25
  3. synchronisation entre deux threads
    Par chabfive dans le forum Concurrence et multi-thread
    Réponses: 9
    Dernier message: 03/11/2006, 12h17
  4. synchronisation de 2 threads
    Par chonos dans le forum C++
    Réponses: 8
    Dernier message: 28/08/2006, 17h03
  5. Synchronisation entre 2 threads
    Par bodbod dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2004, 18h29

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