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, _beginthreadex

    If 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.


Anmelden zum Antworten