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

Threads & Processus C++ Discussion :

Thread -> WaitForSingleObject() && Application -> Bloquée


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Par défaut Thread -> WaitForSingleObject() && Application -> Bloquée
    Bonjours à tous !

    Je ne comprends pas bien le fonctionnement ci-après :

    J'ai une fonction qui lance deux threads. Ces deux threads sont synchronisés entre eux. Normalement, pendant qu'ils s'exécutent, je devrais être censé pouvoir naviguer à souhait sur l'interface graphique de mon application. Néanmoins, l'usage de WaitForSingleObject m'empêche vraisemblablement de le faire : l'application est bloquée.

    NB : Les deux threads sont exécutés de leur première à leur dernière instruction.

    Sauriez-vous ce qui cloche ?

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 472
    Par défaut
    WaitForSingleObject fait attendre le thread qui l'appel jusqu'à ce que le handle en paramètre soit signalé.
    Si le thread qui appel WaitForSingleObject est le thread graphique, l'affichage est bloqué.
    Je pense que vous avez mal compris l'utilisation de WaitForSingleObject.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    Bonjour,
    le WaitForSingleObject est vraiment utile des le moment ou l'application va se fermer afin que tous les processus fils soit bien mort avant la mort du processus père afin d'éviter des problèmes de processus fantômes.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Par défaut
    Citation Envoyé par bacelar Voir le message
    WaitForSingleObject fait attendre le thread qui l'appel jusqu'à ce que le handle en paramètre soit signalé.
    Si le thread qui appel WaitForSingleObject est le thread graphique, l'affichage est bloqué.
    Je pense que vous avez mal compris l'utilisation de WaitForSingleObject.
    Hum... en fait, les deux threads sont complètement indépendants du thread graphique. Grosso modo, sur l'interface graphique il y a un bouton. C'est en cliquant sur ce bouton que les deux threads sont lancés, et pourtant toute l'application est bloquée. Je pense que tout ceci est causé par les appels à WaitForSingleObject().

    Je signale des événements selon ce procédé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Thread1
              // Création de l'événement event1
              [...]
              WaitForSingleObject(event1, INFINITE);
              ResetEvent(event1);
              [Opérations]
              SetEvent(event2);
    Thread2
              // Création de l'événement event2
              [Calculs]
              SetEvent(event2);
              WaitForSingleObject(event2,INFINITE);
              ResetEvent(event2);
    Je précise que les événements sont créés à l'état non signalé. Ces deux threads sont donc plus ou moins bloquants, mais tout ça ne devrait pas bloquer l'application elle-même, si ?

    @jouana : comment pourrais-je m'en passer dans mon cas ?

  5. #5
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    tu utilise quoi comme lib graphique??

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 21
    Par défaut
    Citation Envoyé par jouana Voir le message
    tu utilise quoi comme lib graphique??
    MFC.

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 434
    Par défaut
    C'est pour lucratif un projet a but lucratif?
    sinon y a Qt qui vaut le coup

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/04/2011, 10h20
  2. mon application est bloquée, freeze
    Par ericaix13 dans le forum C#
    Réponses: 11
    Dernier message: 28/10/2010, 20h07
  3. L'application se bloque lors de l'execution
    Par charouel dans le forum Windows Forms
    Réponses: 5
    Dernier message: 22/10/2009, 18h31
  4. [Serveur J2EE] Faire tourner un thread dans un serveur d'applications
    Par Pierre-Yves VAROUX dans le forum Java EE
    Réponses: 3
    Dernier message: 13/10/2005, 14h10

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