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 :

[Multithreading] Probl�me de thread


Sujet :

Threads & Processus C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut [Multithreading] Probl�me de thread
    Hello,

    J'ai un probl�me avec les threads. Je n'ai pas une grande exp�rience de ces b�tes, alors si vous avez des id�es qui vous semblent stupides, n'h�sitez pas.

    Je code un plug-in, dans lequel je peux d�finir une fonction de callback appel�e lorsque se produisent certains �v�nements signal�s par l'application h�te.

    Dans cette fonction de callback se trouvant dans une classe, je cr�e � l'aide d'une API externe (non li�e � l'application h�te) un thread, qui appelle une autre fonction de cette classe. Cette derni�re fonction cr�e �galement des threads.

    Appellons A la fonction de callback, et B la fonction appel�e par A.

    Nous avons : �v�nement -> A -> B

    Le traitement effectu� par A, et surtout par B, peut �tre assez long.
    Pendant ce laps de temps peuvent survenir de nouveaux �v�nements. Je souhaite que dans ce cas, tout soit arr�t�, et que l'appel � la fonction de callback initie un nouveau traitement.

    Pour l'instant, si j'attends que le 1er traitement se termine, cela fonctionne.
    Mais si j'ai le malheur de d�clencher un �v�nement alors qu'un traitement est toujours en cours, �a plante m�chamment. Je n'arrive m�me pas dans la fonction de callback. La pile des appels de fonction ne me donne aucune info valable.

  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
    Difficile de r�pondre avec ces informations un peu trop g�n�rales. As-tu des m�canismes de synchronisations et de contr�le de concurrence d'acc�s (mutex, sections critiques). Peut-�tre ton probl�me est tout simplement un probl�me de r�entrance?

  3. #3
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Ben comme je n'entre m�me pas dans la fonction de callback, la question des m�canismes de synchronisation ne se pose m�me pas (encore).

    Pour la r�entrance, tu sugg�res que l'application h�te de cette fonction de callback n'a pas fait en sorte que cette derni�re soit r�entrante ?

  4. #4
    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
    C'est pas tr�s clair. Peux tu pr�ciser si c'est bien �a le s�quencement:
    1/Application h�te: trap l'�v�nement et appelle la cb A de ton plugin
    2/ A cr�e un thread et appelle B
    3/ B cr�e un thread.
    Bis: nouvel �v�nement.
    1/Application h�te: trap l'�v�nement et appelle la cb de A et l�
    C'est �a?

  5. #5
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    C'est exactement �a.

    Je pr�cise que la fonction de cr�ation de thread prend comme argument un pointeur de fonction, qui se trouve �tre une fonction membre de la classe.
    Le handler retourn� est conserv� comme une donn�e membre.

    Lorsque j'entre dans le callback, je teste si ce handler est null.
    S'il ne l'est pas, je tue le thred.

  6. #6
    Membre �prouv�
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par d�faut
    Je suis arriv� � me mettre dans une configuration dans laquelle je peux rentrer dans le callback. Mettez vos cerveaux en pause le temps que je cherche par moi-m�me le probl�me, maintenant que j'ai un peu plus de billes pour d�boguer. :-)

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [Multithreading] Probl�me de thread
    Par oodini dans le forum C++
    R�ponses: 5
    Dernier message: 04/11/2008, 12h13
  2. [VB.NET] Probl�me de Thread
    Par Sadneth dans le forum ASP.NET
    R�ponses: 26
    Dernier message: 31/01/2006, 10h12
  3. Probl�me synchronisation threads
    Par Linio dans le forum Concurrence et multi-thread
    R�ponses: 19
    Dernier message: 11/01/2006, 16h57
  4. [MFC] Probl�me de Threads + Timers
    Par Invit� dans le forum MFC
    R�ponses: 8
    Dernier message: 30/11/2005, 10h51
  5. [VC++6][DX9] Probl�me de thread lors d'un blit ...
    Par grandjouff dans le forum DirectX
    R�ponses: 2
    Dernier message: 12/06/2003, 22h22

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