Handle von Thread
-
Tag,
ich erstelle ganz brav mit _beginthread() einen Thread (oh Wunder... was auch sonst
)
nun möchte ich das mein Programm mitbekommt wenn der liebe Thread fertig ist..
dies geht ja mit WaitForSingleObject(). oder?Selbiges braucht aber ein Handle..
Frage: Wie bekomm ich das Handle meines Threades?
Ich könnte natürlich auch folgendes machen:
VOID ServerThread (PVOID pvoid) { Tuewas(); ThreadFertig = true; }Aber ist das dei Feine Programmierer Art?
MfG Mrs. Washington
-
Mrs. Washington schrieb:
(oh Wunder... was auch sonst
)Das kann ich Dir sagen: _beginthreadex. Da kommt dann auch ein gleich gültiges Handle zurück, das Du in WaitForSingleObject verwenden kannst.
-
Oder du benutzt GetCurrentThreadId() und danach DuplicateHandle(), um das Handle zu bekommen und schickst dieses dann an den anderen Thread per SendMessage().
-
-King- schrieb:
Mrs. Washington schrieb:
(oh Wunder... was auch sonst
)Das kann ich Dir sagen: _beginthreadex. Da kommt dann auch ein gleich gültiges Handle zurück, das Du in WaitForSingleObject verwenden kannst.
Was ich iher gerade lese sage das auch _beginthread() das besagte Handle zurückgibt:
Run-Time Library Reference:
_beginthread, _beginthreadexIf successful, each of these functions returns a handle to the newly created thread.
-
Mr. Washington schrieb:
Was ich iher gerade lese sage das auch _beginthread() das besagte Handle zurückgibt:
Richtig, nur ist das Handle nicht gültig. Dieses Handle wird bereits intern geschlossen. Anders ist's bei _beginthreadex; dieses Handle mußt Du mit selber mit CloseHandle schliessen, wenn Du es nicht mehr benötigst. Und solange Du es nicht geschlossen hast, kannst Du es verwenden.
-
You are also able to use the thread handle returned by _beginthreadex with the synchronization APIs, which you cannot do with _beginthread.