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 :

Passage de param�tre � un thread


Sujet :

Threads & Processus C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par d�faut Passage de param�tre � un thread
    Bonjour,

    J'essaie de passer une structure � un thread sous Visual C++ express.

    Voici mon petit bout de code:

    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
    #include <windows.h>
    #include <iostream>
    #include <process.h>
     
    using namespace std;
     
    struct Structure
    {
    	int variable;
    };
    Structure structure;
    HANDLE hThread;
     
    unsigned __stdcall Thread(void *arguments)
    {
    	Structure *pStructure = reinterpret_cast<Structure*>(arguments);
    	cout << "Variable dans thread= " << pStructure->variable << endl;
    	return( 0 );
    }
     
    void main ( int argc, char** argv )
    {
    	unsigned ThreadId;
    	Structure *pStructure = &structure;
    	pStructure->variable=1;
     
    	cout << "Verif variable 1 = " << structure.variable << endl;
    	cout << "Verif variable 2 = " << pStructure->variable << endl;
    	hThread = (HANDLE)_beginthreadex(NULL, 0, Thread, &pStructure, 0, &ThreadId);
    	if (hThread == 0)
    	{
    		cout << "Erreur au lancement du thread : " << strerror(errno) << endl;
    		cout << "Code erreur thread DOS : " << _doserrno << endl;
    	}
    	getchar();
    	CloseHandle(hThread);
    }
    Probl�me voici ce que j'obtiens:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    Verif variable 1 = 1
    Verif variable 2 = 1
    Variable dans thread= 4327524
    Ma variable n'est plus �gal � 1 mais � 4327524 dans le thread, d'ou peut venir ce probl�me ? Un mauvais "castage" ?

    Cordialement.

  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
    Bonjour,
    Citation Envoy� par Lovmy Voir le message
    Un mauvais "castage" ?
    Oui

    Tu d�clares :
    Tu appelles :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    hThread = (HANDLE)_beginthreadex(NULL, 0, Thread, &pStructure, 0, &ThreadId);
    Donc le param�tre est un Structure**
    Or dans ton thread :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    Structure *pStructure = reinterpret_cast<Structure*>(arguments);
    Donc le type n'est pas bon.
    Ce devrait �tre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    hThread = (HANDLE)_beginthreadex(NULL, 0, Thread, /*&*/pStructure, 0, &ThreadId);
    // ou
    hThread = (HANDLE)_beginthreadex(NULL, 0, Thread, &structure, 0, &ThreadId);
    Ceci n'est je pr�sume qu'un code d'exemple. Car, il faut aussi veiller � g�rer l'acc�s concurrent aux donn�es partag�es (mutex etc.)

  3. #3
    Membre tr�s actif
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mai 2002
    Messages
    277
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 50
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 277
    Par d�faut & bin
    Re,

    �a marche, j'avais pas fait attention.

    Merci !

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

Discussions similaires

  1. [C] passage de param�tre entre thread
    Par aziatedu13 dans le forum Linux
    R�ponses: 4
    Dernier message: 29/01/2008, 16h39
  2. Thread et passage de param�tre
    Par loman02 dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 10/08/2007, 14h24
  3. Passage de param�tres dans un thread
    Par innosang dans le forum POSIX
    R�ponses: 1
    Dernier message: 04/01/2007, 15h13
  4. Passage de param�tres entre thread
    Par bluecurve dans le forum Langage
    R�ponses: 3
    Dernier message: 25/05/2006, 02h06
  5. R�ponses: 1
    Dernier message: 19/05/2006, 09h24

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