Threads von einer anderen Funtion aus beenden???



  • Hi,

    ich haben mit

    CWindThread *m_myThread = AfxBeginThread(...);
    

    ein Thread erzeugt.
    Gibts es eine Möglichkeit dieses Thread von einer anderen Funktion aus zu beenden?
    In der MSDN steht:

    Wenn Sie einen Thread von einem anderen Thread aus beenden möchten, müssen Sie ein Kommunikationsverfahren zwischen den beiden Threads einrichten.

    Hab leider leine Ahnung wie man das macht :). Hat zufällig jemand eine Idee oder noch besser ein Beispiel :D.

    Martin



  • Spongebob schrieb:

    Hab leider leine Ahnung wie man das macht :). Hat zufällig jemand eine Idee oder noch besser ein Beispiel :D.

    Die wohl einfachste Möglichkeit der "Kommunikation" ist, eine globale Variable vom Typ bool anzulegen. Diese könnte zB 'ThreadX_beenden' heissen und wird bei ihrer Initialisierung auf false gesetzt. Im zu beendenden Thread fragst du diese zyklisch ab und reagierst entsprechend darauf. Im anderen Thread setzt du die Variable auf true, wenn du den Thread beenden willst und wartest, bis dieser beendet wurde. Da du jeweils nur in einem Thread lesend oder schreibend zugreifst, sollte es auch bzgl. Synchronisation keine Probleme geben.
    Wer auf was Vorgefertigtes zurückgreifen will, für den bietet Windows bereits solche signalisierten Objekte an. Dazu suchst du am besten mal nach Event, Mutex oder Semaphore.


Anmelden zum Antworten