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 :

[MFC] PostMessage, multithread


Sujet :

MFC

  1. #1
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    111
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par d�faut [MFC] PostMessage, multithread
    Bonjour,
    Je reviens une nouvelle fois pour vous demander : est ce que le systeme de message avec PostMessage "g�re les acc�s concurents"?
    En fait j'ai deux threads qui font un post message sur le m�me identifiant : et donc sur la m�me fonction associ�e � cet identifiant.
    Est ce que cette fonction peut-etre appel�e simultanement par deux threads? et donc faut-il gerer les acc�s concurents sur les variables modifi�es par cette fonction?
    Voici le code de ma fonction :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    long CThreads_testDlg::OnReceiveMessageTest(WPARAM wparam, LPARAM lparam) 
    { 
    	int indice = (int) wparam;
    	int id = (int) lparam;
    	/*CString ids;
    	ids.Format("id=%d -- cpt=%d",id ,_compteur );
    	AfxMessageBox(ids);*/
    	if(_compteur > 0)
    	{
    		_compteur--;
    		SetEvent(_threads[indice]->_events[0]);	
    	}
    	else
    	{
    		SetEvent(_threads[indice]->_events[1]);
    	}
    	return 0;
    }
    Comment faire pour mettre un verrou autour de ma variable _compteur? (qui est une variable de classe)

  2. #2
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Windows g�re les messages grace � une pile de messages, la pile est d�pil�e au fur et � mesure, chaque message est trait� individuellement et un message � la fois.

    Pour la protection des ressources, dans ton cas regarde du cot� des mutex.

  3. #3
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    111
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par d�faut
    Il n'est donc pas possible que la fonction d�crite pr�cedemment soit appel�e une seconde fois avant qu'elle ne se soit completement termin�e?
    m�me si deux threads font apelle au message qui lui est associ�?

  4. #4
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Normalement non car les messages sont empil�s dans la queue.

    Mais tu peux le v�rifier avec les mutex, en mettant un timeout.

  5. #5
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    111
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par d�faut
    et comment fonctionne les mutex? j'ai lu quelques doc mais c'est pas tr�s bien expliqu�... aurais-tu une explication simple? est-il possible de faire un truc du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    Lock()
    //traitement
    Unlock()
    ???

  6. #6
    Membre �prouv�
    Inscrit en
    Avril 2004
    Messages
    122
    D�tails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 122
    Par d�faut
    Oui c'est exactement �a, tu te d�clare un CMutex dans ta dial et quand tu veux commencer ta protection tu mutex.lock() et quand tu as finis tu fais mutex.unlock().

  7. #7
    Membre confirm�
    Inscrit en
    Juin 2004
    Messages
    111
    D�tails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 111
    Par d�faut
    cool 8) , merci pour ton aide

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

Discussions similaires

  1. [MFC]Simuler CTRL+HOME avec PostMessage
    Par corwin_d_ambre dans le forum MFC
    R�ponses: 4
    Dernier message: 27/01/2006, 11h48
  2. R�ponses: 5
    Dernier message: 11/01/2006, 07h58
  3. [MFC] multithread, communication p�re<->fils
    Par Joeleclems dans le forum MFC
    R�ponses: 19
    Dernier message: 19/05/2005, 10h31
  4. [WinAPI C++] MultiThreading et PostMessage
    Par Gruik dans le forum Windows
    R�ponses: 7
    Dernier message: 29/03/2004, 15h58
  5. [MFC] Ctrl/Alt+touches avec PostMessage
    Par Fladnag dans le forum MFC
    R�ponses: 4
    Dernier message: 10/02/2004, 14h33

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