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

MFC Discussion :

Synchro de thread


Sujet :

MFC

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut Synchro de thread
    Bonjour à tous tout d'abord mon code.

    Ceci provient d'un thread que j'appelle thread principal.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if (this->getSimuTimee() >= localEvent->time)
    		{
    			destination = localEvent->tgt;
    			if (!destination->resumeThread()) 
    			{str.Format("K> Error resume thread");}
    			WaitForSingleObject(CPROCESSHANDLE, INFINITE);
    		}

    destination est un sous thread choisi par hasar avant cette boucle donc ce n'est jamais le meme thread. a la fin d'un thread de type "destination", on trouve :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PulseEvent(CPROCESSHANDLE);
    SuspendThread();

    Mon problème vient du fait que je veux attendre la fin du thread secondaire dans la thread principal, je pensais que la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WaitForSingleObject(CPROCESSHANDLE, INFINITE);
    servait a la faire, mais je m'apercois que ce n'ets pas le cas. Avez vous une idée ? Merci !!!
    [/code]

  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
    Le principe est bon, WaitForSingleObject attend effectivement l'évenement, et là sans TimeOut.

    N'y a-t-il pas un problème avec destination plutôt ?

    Tu as fait u pas à pas pour vois si tu bloques sur le WaitForSingle ?

    Ou l'évènement est produit plus tôt que tu ne le pense.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut
    En pas a pas, ca marche oui, mais en execution normale non ! Surement le comportement des threads qui est différent entre les 2 modes. A priori, une fois que j'ai fait le resume, l'autre thread ne se lance pas. donc ca bloque indefiniment sur le wait. Bizarre !

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    104
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 104
    Par défaut
    en fait, en debug, j'ai des threads qui se killent tout seul. On le voit en bas dans la fenetre de VC++. Mais pourquoi un thread se terminerait tout seul alors que tous mes threads sont dans des while(1) ???

    Est ce par ce qu'ils eccedent a des variables du thread primaires qui ne sont pas protegees ? Car j'ai du mal avec les CMutex, j'ai l'impression qu'ils ne servent a rien dans mon programme.

    Merci

Discussions similaires

  1. mutex synchro des threads
    Par mapmip dans le forum Access
    Réponses: 1
    Dernier message: 26/05/2009, 19h01
  2. Quelques questions sur la synchro de threads
    Par Djobird dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 28/04/2009, 15h51
  3. Synchro Thread et Vecteur
    Par etherny dans le forum Threads & Processus
    Réponses: 8
    Dernier message: 28/12/2007, 11h44
  4. Synchro multi-thread : comment tester ?
    Par buzzkaido dans le forum C++
    Réponses: 5
    Dernier message: 17/10/2007, 20h51
  5. Synchro N threads
    Par HurtMarley dans le forum Général Java
    Réponses: 2
    Dernier message: 11/05/2007, 10h58

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