c ++ - Hvordan kan WaitForDeath () dræbe tråden i prøven?

Indlæg af Hanne Mølgaard Plasc

Problem



class Thread
{
public:
    Thread ( DWORD (WINAPI * pFun) (void* arg), void* pArg)
    {
        \_handle = CreateThread (
        0, // Security attributes
        0, // Stack size
        pFun,
        pArg,
        CREATE\_SUSPENDED,
        &\_tid);
    }
    ~Thread () { CloseHandle (\_handle); }
    void Resume () { ResumeThread (\_handle); }
    void WaitForDeath ()
    {
        WaitForSingleObject (\_handle, 2000);
    }
private:
    HANDLE \_handle;
    DWORD  \_tid;     // thread id
};


Hvordan kan WaitForDeath () dræbe tråden?

Bedste reference


Tråden dræbes ikke, den dør bare af sig selv, når funktionen passerer som en parameter udgår.


WaitForSingleObject venter på denne opsigelse.

Andre referencer 1


Faktisk vil WaitForDead vente på, at tråden er færdig (via normal funktion exit) eller time out i 2 sekunder og lade tråden være i live. Du kan muligvis tilføje et synkroniseringsobjekt (dvs. Win32-begivenhed) for at signalere tråden til at afslutte og få tråden til at tjekke det med jævne mellemrum og afslutte hvis signaleret.