Contrôler la mort d'un thread
Salut,
Dans une application que je développe, j'ai besoin de créer un thread qui va exécuter en permanence une fonction d'Update. N'y connaissant pas grand chose en multithreading C++, je me suis servi de cet article : http://www.codeproject.com/KB/thread...gTutorial.aspx
Je bosse sur du code qui est dans une DLL, et je n'ai pas accès à la fonction main() de mon appli. Je crée mon thread dans une fonction Initialize() d'une classe C++ :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
unsigned l_Id;
DWORD l_ExitCode;
m_ThreadHandle = (HANDLE) _beginthreadex( NULL, 0, StaticUpdate, this, CREATE_SUSPENDED, &l_Id );
ASSERT( m_ThreadHandle != 0 );
GetExitCodeThread( m_ThreadHandle, &l_ExitCode );
ResumeThread( m_ThreadHandle ); |
Ici, m_ThreadHandle est une variable de classe de type HANDLE. Le thread se crée correctement et effectue bien l'appel à StaticUpdate(). Cependant, dès que la fonction Initialize() qui crée ce thread se termine, mon thread meurt. Je peux éviter ca en mettant un WaitForSingleObject( m_ThreadHandle, INFINITE ); à la fin de mon Initialize(), mais dans ce cas là je ne sors plus jamais de cette méthode, ce qui est gênant ^^.
J'aimerais savoir comment je peux indiquer à mon thread qu'il ne doit pas mourir dès que la fonction qui l'a créé est terminée, et qu'il ne meure que lorsque je le demande explicitement. Est-ce possible ?
Merci d'avance,
Hurricanes.