Bonjour,
je développe une classe C++ pour gérer les threads (interfaçant les API WIn32).
J'aurai besoin de plusieurs petites précisions pour le nettoyage à faire après la fin d'un thread et de l'utilisation de l'API CloseHandle.

1. Après le kill d'un thread par l'API "TerminateThread", est-il nécessaire d'utiliser CloseHandle sur le handle du thread ?

2. Le thread se termine de lui-même (il a terminé ce qu'il avait à faire) peut-il lui-même appelé la fonction CloseHandle juste avant de terminer ?

Exemple :
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
// Launch-Start thread
HANDLE	classThread::launch(void)
		{
		if(this->status != THREAD_NOT_RUNNING)		return this->handle;
 
		// Create thread & return handle
		this->handle	= CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)_threadFn, (LPVOID)this, NULL, &this->_id);
 
		return this->handle;
		}
 
// Main thread function
UINT32	classThread::_threadFn(void * lParam)
		{
		classThread &thread = (classThread&)lParam;
 
		// Change status
		thread.status		= THREAD_RUNNING;
 
		// Execute main function
		thread.mainFn();
 
		// Clean up
		CloseHandle(thread.handle);
		thread.handle  = NULL;
 
		// Change status
		thread.status		= THREAD_NOT_RUNNING;
 
		return 0;
		}
Merci.