Closehandle & CreateThread
Bonjour,
J'ai trouv� dans MSDN le bout de code suivant :
Citation:
If the connection is successful, write and read worker threads are created.
CloseHandle (CreateThread(NULL, 0, ReadThread, (LPVOID)s, 0, NULL));
WriteThread ((LPVOID)s);
A la page CloseHandle de MSDN, il y a la phrase suivante :
Citation:
Closing a thread handle does not terminate the associated thread. To remove a thread object, you must terminate the thread, and then close all handles to the thread.
Je suis surpris par l'utilisation du CloseHandle. Je m'explique : lors de la cr�ation d'un thread avec la fonction CreateThread, celle ci retourne un handle qui permet de g�rer le thread.
Si le handle associ� au thread est ferm� d�s la naissance du thread, est ce que le comportement du thread est modifi� ou sa gestion par l'OS est alt�r�?
Que se passe t il au niveau de l'OS si j'utilise CreateThread sans r�cup�rer le HANDLE retourn� par cette fonction ?
Je cherche a �viter toute suite de m�moire de mani�re � ne pas faire saturer la m�moire.
Seb
Re: Closehandle & CreateThread
Citation:
Envoy� par sebastakis
Je suis surpris par l'utilisation du CloseHandle. Je m'explique : lors de la cr�ation d'un thread avec la fonction CreateThread, celle ci retourne un handle qui permet de g�rer le thread.
Si le handle associ� au thread est ferm� d�s la naissance du thread, est ce que le comportement du thread est modifi� ou sa gestion par l'OS est alt�r�?
Non. Tu perd simplement la possibilit� de le contr�ler.
Citation:
Envoy� par sebastakis
Que se passe t il au niveau de l'OS si j'utilise CreateThread sans r�cup�rer le HANDLE retourn� par cette fonction ?
Ce handle t'es renvoy�, que tu le r�cup�re ou non. Si tu ne le r�cup�re pas, il est perdu au niveau de ton code, mais il existe au sein de ton process.
Citation:
Envoy� par sebastakis
Je cherche a �viter toute suite de m�moire de mani�re � ne pas faire saturer la m�moire.
Si tu ne fait pas de CloseHandle, la m�moire allou�e pour l'objet thread ne sera pas lib�r�e, du moins pas avant la fin de ton processus. C'est pas �norme, mais c'est bien une fuite de m�moire.