"Lebensdauer" Thread ?



  • Hi,
    wenn ich mit

    hLogThread = CreateThread(NULL,0,LogThread,(LPVOID)this,0,&dwLogThreadId)
    

    einen Thread erstelle, und hier

    DWORD WINAPI LogThread(LPVOID lpRelease)
    {
            CRelease *pRelease = (CRelease*) lpRelease;
            pRelease->WriteInternLogToFile();
    }
    

    mein Zeugs ausführe, dann ist der Thread nach beenden der letzen Funktion "weg" ?
    Hoert sich vielleicht bissle bloed an, aber nachdem mein Programm beendet ist, soll im Hintergrund net noch irgendwelches zeugs laufen und evtl. fehler verursachen.
    Und wenn ich mein Programm beende (oder dieses abstürzt), dann werden auch die Threads beendet, welche ich gestartet habe?

    danke schonmal
    Umpfel



  • Ja, sobald die Threadfunktion am Ende angelangt ist, wird sie (und damit der Thread) beendet.



  • Hallo,

    Und wenn ich mein Programm beende (oder dieses abstürzt), dann werden auch die Threads beendet, welche ich gestartet habe?

    Ja, so ist es, allerdings darf man im Programmverlauf nicht vergessen, CloseHandle mit dem von CreateThread zurückgegebenen Handle aufzurufen, falls ein Thread beendet wurde und das Programm weiter laufen soll, weil sonst das "Thread-Objekt" im System verbleibt.

    MfG,

    Probe-Nutzer



  • Ausserdem kann CloseHandle unmittelbar nach CreateThread aufgerufen werden, wenn das Handle nicht weiter verwendet wird (z.B. für WaitForSingleObject(..)).
    Simon


Anmelden zum Antworten