Bonjour tout le monde,
j'ai un petit souci avec un thread et une variable globale.
Mon appli doit tourner exclusivement sous Windows (XP/Vista).
J'ai un bout de code "critique" qui peut être bloquant. J'ai donc décidé de le mettre dans un thread afin de pouvoir l'arêter au bout d'un certain temps s'il ne répond pas.
En gros, mon code ressemble à ça:
Code c++ : 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 // le thread DWORD WINAPI MonThread( MonObjet* pMonObjet) { // du code qui utilise pMonObjet } //quelque part ailleurs, dans une fonction membre de MonObjet: DWORD dwThreadId = 0; HANDLE handle = CreateThread( NULL, //security attributes 0, //stack size (LPTHREAD_START_ROUTINE) MonThread, // start address (LPVOID) this, // thread parameter 0, // creation flag &dwThreadId); // thread Id DWORD dwWaitResult = WaitForSingleObject(handle, myThreadTimeOutMax);
Jusqu'ici tout va bien.
Maintenant, j'ai une variable globale (un objet) que je voudrais utiliser dans ce thread. Si j'ai bien compris, la mémoire du thread et celle de l'application sont distinctes, donc mon objet global n'est pas connu à l'intérieur du thread.
1/ Ais-je bien compris le problème?
2/ Quelles sont les solutions qui existent pour régler ce problème?
ps: j'ai cherché du côté des "security attributes" de CreateThread, mais je n'ai pas réussi à en sortir quelque chose.
Partager