wieder einmal threads



  • Hallo,

    wie kann ich einen Thread stoppen.
    In meinem Programm habe ich den Thread gestartet und muß diesen an einem bestimmten Punkt stoppen.
    Irgendwann soll er dann wieder weiterlaufen.
    Ich weiss allerdings nicht was der Thread zu diesem Zeitpunkt macht. Also mit Semaphoren oder bool´schen Variablen ist nichts.
    Ich dachte es gäbe eine Funktion StopThread oder so ähnlich. Habe aber nichts gefunden.

    Danke



  • Ich dachte es gäbe eine Funktion StopThread oder so ähnlich.

    Sowas gibt's auch, allerdings unter dem Namen SuspendThread().



  • @King: Danke für Deine Hilfe.
    Hatte es gerade nochmals ergoogelt.

    Für alle die es interessiert:

    So wird der Thread erzeugt 
    
    HANDLE hthread = CreateThread(
       NULL,            // Security Attribute
       0,                   // Stack size, Default = 1 MB
       myfct,           // Startadresse 
       &parm,           // Zeiger auf Parameter (VOID)
       NULL,            // NULL oder CREATE_SUSPENDED
       &threadid );         // Zeiger auf ThreadID (DWORD)
    So erhält man an den Exit Code des Threads 
    
    BOOL ok = GetExitCode( 
          hthread,          // Thread Handle
          &exitcode);   // Exit Code (DWORD)    
    Starten und Stoppen von Threads
            // Normalfall: Der Thread beendet sich selbst
            // Wird implizit oder explizit aufgerufen
            ExitThread (exitcode);  // UINT exitcode
            DWORD   // count wird erhöht
            suspend_count = SuspendThread (hthread);
            // count wird erniedrigt
            suspend_count = ResumeThread (hthread); 
            BOOL    // kill
            ok = TerminateThread (hthread, &exitcode);
    

Anmelden zum Antworten