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 :

Interaction entre thread principal et thread secondaire


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Par défaut Interaction entre thread principal et thread secondaire
    Salut,
    Dans mon application C++, j'ai besoin d'utiliser le multithreading, donc je crée des threads secondaire à l'aide de la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _beginthread(arg1,arg2,arg3)
    .

    Mon problème c'est que je n'arrive pas à faire une interaction entre mon thread principal et mon thread secondaire. Plus clairement, je veux à partir de mon thread secondaire faire un rafraichissement graphique dans le thread principal.

    ça fait un bon moment que je suis coincé la dessus donc si vous pouvez m'aider n'hésitez pas SVP.

    Merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Avec les MFCs, je préfère créer les threads via AfxBeginThread et un objet CWinThread.

    Sinon, pour une simple notification, j'enverrais un message (au sens windows) depuis le thread secondaire vers le thread principale.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Par défaut
    Merci beaucoup 3DArchi pour ta réponse.
    je préfère créer les threads via AfxBeginThread et un objet CWinThread.
    C'est quoi l'avantage de cette fonction par rapport à _beginthread ?

    j'enverrais un message (au sens windows) depuis le thread secondaire vers le thread principale.
    Comment on peux faire ça (quelle focntion)?

    Merci encore.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 502
    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 502
    Par défaut
    C'est quoi l'avantage de cette fonction par rapport à _beginthread ?
    Plein de cochonneries que les MFC font en cachettes pour avoir des informations sur les thread et leurs allocations mémoires.
    Donc si ton thread appel des classes, méthodes, fonction etc... des MFC, suis scrupuleusement 3DArchi.

    Comment on peux faire ça (quelle focntion)?
    PostMessage
    http://msdn.microsoft.com/en-us/libr...44(VS.85).aspx

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 110
    Par défaut
    Merci bacelar,
    En fait, pour les éléments graphiques j'utilise ILOG Views (stage oblige). Est ce donc toujours nécessaire d'utiliser AfxBeginThread ?
    Merci

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Art! Le problème d'Ilog, c'est que c'est propriétaire et qu'il n'y a pas beaucoup de doc
    Ton projet contient aussi les MFC ?
    Sinon, passes simplement par CreateThread.

  7. #7
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par mehdi_me85 Voir le message
    C'est quoi l'avantage de cette fonction par rapport à _beginthread ?
    Disons que je voulais plutôt parler de CreateThread pour un thread de travail. La différence :
    Citation Envoyé par MSDN
    _beginthread and _beginthreadex are similar to the CreateThread function in the Win32 API but has these differences:
    * They initialize certain C run-time library variables. This is important only if you use the C run-time library in your threads.
    * CreateThread helps provide control over security attributes. You can use this function to start a thread in a suspended state.
    Citation Envoyé par mehdi_me85 Voir le message
    Comment on peux faire ça (quelle focntion)?
    PostMessage : tu transmet à ton thread le HWND qui te sert de boîte aux lettres, tu te définis un petit message WM_MA_NOTIFICATION, tu traites sa réception côté thread principal et son envoi côté thread secondaire. Cela suppose bien sûr :
    - que tu n'as aucun échange de données (en particulier pointeurs et références) entre les 2 threads,
    - que le HWND de ta boîte aux lettres a une durée de vie plus importante que ton thread de travail.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2013, 18h15
  2. Réponses: 11
    Dernier message: 24/10/2010, 20h28
  3. [QThread] Comment attendre une information d'un thread dans le thread principal ?
    Par f.denis dans le forum Multithreading
    Réponses: 5
    Dernier message: 15/04/2010, 11h57
  4. Réponses: 7
    Dernier message: 03/07/2009, 13h45
  5. message entre dialog box et thread
    Par scorbo dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2004, 11h01

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