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:
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:
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.