CreateThread - Wann das Handle schließen?
-
Hi,
CreateThread gibt ja das Thread-Handle zurück und afaik muss man das mit CloseHandle schließen. Nur wann, ist
CloseHandle( CreateThread(...) )
ok?
-
dfdf schrieb:
CloseHandle( CreateThread(...) )
nicht dein ernst oder?
...
überleg doch mal, das Handle des Threads würde sofort nach der erstellung wieder geschloßen.das Handle für den thread benötigst du doch um mit dem threadhandle etwas anzufangen. zb. WaitForSingleObject oder dergleichen.
nachdem du mit der bearbeitung des handles fertig bist kannst du es wieder schließen.
also wenn dann nach WaitForSingleObject.
-
@rT!f@Ct schrieb:
das Handle für den thread benötigst du doch um mit dem threadhandle etwas anzufangen. zb. WaitForSingleObject oder dergleichen.
Ich brauche das Handle ja nicht mehr, der Thread soll aber natürlich schon noch weiterlaufen. Wär's dann ok?
-
warum erstellst du dann ne variable für das threadhandle wenn du es nicht brauchst.
-
Ich erstelle ja gar keine Variable
Nur das Handle, was CreateThread zurückgibt, muss ich ja über kurz oder lang schließen. 'Ne Möglichkeit wäre auch noch am Ende des Threads
CloseHandle(GetCurrentThread());
, aber evtl braucht der Thread-Ersteller das Handle ja noch - soll heißen, die Verwantwortung für's Schließen sollte schon beim Ersteller liegen.
Und die Frage ist halt, ob ich das Handle direkt schließen kann..
-
dfdf schrieb:
Und die Frage ist halt, ob ich das Handle direkt schließen kann..
Ok, die andere Möglichkeit wäre ja nur, dass das Schließen erst nach Beenden des Threads erlaubt wäre; das kann ich mich aber nicht vorstellen. Es bleibt jetzt erstmal bei
CloseHandle( CreateThread(...) )
, für Gegenargumente bin ich natürlich weiterhin offen.
-
CloseHandle(GetCurrentThread())
wäre falsch^^
The pseudo handle need not be closed when it is no longer needed. Calling the CloseHandle function with this handle has no effect.
-
Ok, danke! Nur: Wo hast du das Zitat her? Auf der entsprechenden Seite der MSDN finde ich's nicht und in dem Beispielcode von hier werden die Thread-Handles auch geschlossen
-
bezog sich nur auf das GetCurrentThread: http://msdn.microsoft.com/en-us/library/ms683182
-
Ohje, hatte deinen Post schlampig gelesen, sorry Dude :p
-
Du musst das Handle von CreateThread(..) mit CloseHandle(..) schliessen.
Das darfst Du, wenn Du das Handle nicht mehr länger benötigst, sofort nach CreateThread(..) tun oder eben auch später.Simon