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 :

[Multi-threading] Probleme avec les mutex


Sujet :

Visual C++

Mode arborescent

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �m�rite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par d�faut [Multi-threading] Probleme avec les mutex
    Bonjour,

    Je veux simplement mettre en �vidence la mutuelle exclusion dans un environnement multi-thread.
    Pour cela j'ai cr�� trois thread qui acc�dent en �criture � une variable globale. Dans la zone prot�g�e, j'ai donc incr�ment� la variable globale et ins�rer des printf() pour savoir quel thread est entrain d'utiliser la variable.
    Mais voil� que je constate, que la zone prot�g�e ne l'est pas du tout et tout les threads peuvent acc�der en m�me temps � cette zone.
    Si vous pourriez me dire pourquoi et d'ou vient mon erreur?

    Voici une partie du code (je ne mets pas la cr�ation des threads):
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    /****************************************************************
    * threadFunc0:
    *
    * 06/03/2007
    ****************************************************************/
    DWORD WINAPI threadFunc0 (LPVOID lpParameter)
    {
    	InitializeCriticalSection(&m_sectionCr);
     
    	int i = *(int*) lpParameter;
    	bool bEndThread = false;
     
    	while(!bEndThread)
    	{
    		writeVar(i);
    		bEndThread = true;
    	}
     
    	return 0;
    }
     
    /****************************************************************
    * threadFunc1:
    *
    * 06/03/2007
    ****************************************************************/
    DWORD WINAPI threadFunc1 (LPVOID lpParameter)
    {
    	InitializeCriticalSection(&m_sectionCr);
     
    	int i = *(int*) lpParameter;
    	bool bEndThread = false;
     
    	while(!bEndThread)
    	{
    		writeVar(i);
    		bEndThread = true;
    	}
     
    	return 0;
    }
     
    /****************************************************************
    * threadFunc2:
    *
    * 06/03/2007
    ****************************************************************/
    DWORD WINAPI threadFunc2 (LPVOID lpParameter)
    {
    	InitializeCriticalSection(&m_sectionCr);
     
    	int i = *(int*) lpParameter;
    	bool bEndThread = false;
     
    	while(!bEndThread)
    	{
    		writeVar(i);
    		bEndThread = true;
    	}
     
    	return 0;
    }
     
    /****************************************************************
    * writeVar:
    *
    * 06/03/2007
    ****************************************************************/
    void writeVar (int i)
    {
    	InitializeCriticalSection(&m_sectionCr);
     
    	EnterCriticalSection(&m_sectionCr);
    	printf("\n---Debut section critique: writeVar()---\n");
    	printf("Thread %c: m_iVal = %d\n",i,m_iVal);
    	m_iVal++;
    	Sleep(1000);
    	printf("Thread %c: m_iVal = %d\n",i,m_iVal);
    	printf("---Fin section critique: writeVar()---\n");
    	LeaveCriticalSection(&m_sectionCr);
    }
    Note: la variable i coorespond au num�ri du thread.

    Et voici les r�sultats obtenus pou une tentative mais ca reste toujours du meme genre si je relance mon appli:
    Nom : resultat_MUTEX.JPG
Affichages : 123
Taille : 38,2 Ko

    Merci.
    Bonne fin de journ�e!

    Nicolas
    Images attach�es Images attach�es  

Discussions similaires

  1. probleme avec les thread
    Par ashurah dans le forum Concurrence et multi-thread
    R�ponses: 15
    Dernier message: 26/03/2010, 14h05
  2. Probleme avec les Threads
    Par ouxss dans le forum C++
    R�ponses: 2
    Dernier message: 05/01/2010, 10h27
  3. Probleme avec les threads
    Par Loenix dans le forum G�n�ral Python
    R�ponses: 4
    Dernier message: 04/06/2009, 14h50
  4. Probleme avec les thread
    Par jonny dans le forum MFC
    R�ponses: 11
    Dernier message: 01/06/2006, 17h37
  5. Probleme avec les threads
    Par Orahn dans le forum MFC
    R�ponses: 5
    Dernier message: 04/11/2005, 10h14

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