CLoseHandle ?
-
Hallo,
ist bei folgender Funktion:
void starttestthread() { HANDLE hnd=CreateThread(NULL, 0, mythread, NULL, 0, NULL); if(hnd){...} }
ein CLoseHandle am Schluss von Nöten? (der Thread läuft ja weiter...)
-
Wenn Du das Handle noch brauchst, weil Du z.B. WaitForSingleObject(..) oder ähnlich aufrufst, dann kannst Du (noch) nicht CloseHandle(..) aufrufen. Das würdest Du dann natürlich erst machen, wenn Du das Handle nicht mehr brauchst.
Anonsten kannst Du CloseHandle(..) aufrufen, der Thread läuft trotzdem weiter (ist so dokumentiert im MSDN).
Generell ist CloseHandle(..) nötig, die Frage ist nur wann.
Simon
-
Stellt sich wieder die Frage, warum Du etwas zu CreateThread fragst im MFC Forum. Letzten Endes sollte man CreateThread vermeiden und die CRT/MFC Versionen benutzen.
Siehe:
http://blog.m-ri.de/index.php/2007/11/28/createthread-und-die-crt/
http://blog.m-ri.de/index.php/2008/02/28/afxbeginthread-versus-_beginthreadex/
-
Hallo,
danke für die Antworten.
Ich denke ich bin im falschen Forum aber will wegen dieser kleinen Frage nicht noch einen Thread aufmachen.
Denoch möchte ich eine Erweiterung zu dem obigen Beispiel fragen:void starttestthread() { HANDLE hnd=CreateThread(NULL, 0, mythread1, NULL, 0, NULL); if(hnd){...} hnd=CreateThread(NULL, 0, mythread2, NULL, 0, NULL); if(hnd){...} }
Habe ich hier ein offenes Handle erzeugt, weil ich dasselbe ohne CloseHandle() verwende?
-
Habe ich hier ein offenes Handle erzeugt, weil ich dasselbe ohne CloseHandle() verwende?
Ja
Handle Leak