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

Visual C++ Discussion :

Multithread, probl�me d�ordonnancement


Sujet :

Visual C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Avril 2007
    Messages
    57
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par d�faut Multithread, probl�me d�ordonnancement
    Bonjour,

    Dans mon application, je cr�er un thread pour l�envoi de donn� par le port s�rie.
    Tout ce passe bien. (Hormis que la p�riode entre l�envoie des trames n�est pas constant).

    Lorsque je cr�e un second thread pour la gestion d�un objet directx, ou pour la gestion de la r�ception du port s�rie. Il n�y a pas d�ordonnancement.
    En effet je reste toujours dans le derniers thread cr��, et ne retourne jamais dans l�autre.

    J�ai essay� de mettre des mutex, mais je reste bloqu� au niveau du WaitForSingleObject


    J�ai vu d�autre programme, cr�ant plusieurs thread et tous s�ex�cutant en parall�le sans rien faire de particulier.

    Auriez vous une id�e. Pour que les ex�cutions de tous les threads se fassent bien en parall�le.

    Merci

  2. #2
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    1. Qu'appelles-tu "ordonnancement"?
    2. Comment lances-tu tes threads (un bout de code STP)?

  3. #3
    Membre confirm�
    Profil pro
    �tudiant
    Inscrit en
    Avril 2007
    Messages
    57
    D�tails du profil
    Informations personnelles :
    �ge : 42
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 57
    Par d�faut
    Bonsoir,

    J�appelle ordonnancement, le fait que chaque thread soit bien ex�cut� chacun son tours.

    Alors :

    Pour cr�er les threads
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_prThread1=AfxBeginThread(m_porta.ThreadEnvoi,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
    (pour l�envoie de mes trames)

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_prThread=AfxBeginThread(m_porta.ThreadSuivi,GetSafeHwnd(),THREAD_PRIORITY_NORMAL);
    (pour la reception du port s�rie. Je fais de la m�me fa�on pour l�objet 3d)



    les fonctions sont du type
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
     
    UINT port::ThreadEnvoi(LPVOID pParam)
    {
    	// envoie du message de traitement à la fenetre
    	::PostMessage((HWND)pParam,WM_ENVOI,0,0);// PostMessage
    	return 0;
    }
    Et la fonction qui interagie avec le message et du type

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    While (variable)
     
    {
    traitement.
     
    pumpmessages().
    }

  4. #4
    Membre �m�rite
    Avatar de Spout
    Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    F�vrier 2007
    Messages
    904
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : France, Val d'Oise (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 904
    Par d�faut
    Je n'ai jamais eu ce genre de probl�me. Mais je n'utilisais pas AfxBeginThread non plus..
    Tu peux essayer avec CreateThread si tu n'es pas un MFC-addict

  5. #5
    R�dacteur
    Avatar de farscape
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par d�faut
    salut,
    il n'y pas de probl�me avec AfxBeginThread et c'est avec cette fonction que tu dois travailler dans un programme MFC.
    on peut avoir plusieurs thread en parall�le sans probl�mes.
    apr�s tout est question d'impl�mentation et de contexte.
    au vu de ce que tu d�cris la seule chose pouvant provoquer un probl�me serait ta boucle while.
    note que si ton thread consomme l'int�gralit� du cpu ,style boucle a vide tu peux arriver a la situation que tu d�cris...
    mais bon on a pas assez d'�l�ments pour diagnostiquer le probl�me.

  6. #6
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par d�faut bonjour
    J�ai essay� de mettre des mutex, mais je reste bloqu� au niveau du WaitForSingleObject
    Si tu reste bloqu� au niveau du waitforSingleobject c'est que ton evenement n'arrive pas et que tu as declare ce wait avec INFINITE.

    Peut tu montrer le code ou tu pense bloquer.

    Cordialement

  7. #7
    Expert confirm�
    Avatar de Mat.M
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 537
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 537
    Par d�faut
    Citation Envoy� par ellipse2v Voir le message
    Lorsque je cr�e un second thread pour la gestion d�un objet directx,
    !! Catastrophe annonc�e !
    Tu dois cr�er un thread pour un objet Direct X ?
    Direct X n'est vraiment pas fait pour cela...si tu fais �a tu risques nombre de crashes..

Discussions similaires

  1. Client Serveur multithread : probl�me
    Par cb-bk dans le forum Threads & Processus
    R�ponses: 1
    Dernier message: 04/04/2009, 16h05
  2. R�ponses: 8
    Dernier message: 04/03/2009, 14h39
  3. [Multithreading] Probl�me de thread
    Par oodini dans le forum Threads & Processus
    R�ponses: 5
    Dernier message: 04/11/2008, 12h13
  4. [Multithreading] Probl�me de thread
    Par oodini dans le forum C++
    R�ponses: 5
    Dernier message: 04/11/2008, 12h13
  5. Multithreading : probl�me avec Abort()
    Par mrrenard dans le forum C#
    R�ponses: 7
    Dernier message: 29/10/2007, 17h02

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