Thread beenden



  • Script-Styler schrieb:

    man declared im klassenheader eine virtual void Rnn(void);

    aber wie macht man das genau? ich hab da mal irgendwo was zu gelesen, aber wo? 😡

    Hm, ... was ist eigentlich Dein Ziel (und erzähl mir jetzt nix von Deinem Wecker ⚠ )?
    Zur Zeit sieht es aus, als wolltest Du einen WinAPI-Thread in eine Klasse (C++) wrappen... 🙄 .



  • häh schrieb:

    TerminateThread

    Ist unsauber, sollte man nicht verwenden!



  • So in der Art.

    ich habe eine Weckerklasse (CAlarm).

    Daort kann man mit SetAlarm und Activate den Alarm aktivieren.

    Dann soll der Thread ,der die Zeit prüft, mit Start gestartet, mit Stop beendet werden.

    Sobald da die Zeiten übereinstimmen soll eine Klassenmethode virtual aufgerufen Werden, die man beim Klassenaufruf deklariert. das soll quasi so eine art callback sein. also nur auf start und dann kommt schon irgendwann der Aufruf...



  • Oha, da gehen einige Begriffe durcheinander, also definieren und deklarieren tut man beim Schreiben des Quellcodes.

    Vielleicht hilft Dir das weiter: http://www.codeproject.com/threads/memberthreads.asp evtl. auch http://www.codeproject.com/threads/cthread.asp



  • CodeFinder schrieb:

    häh schrieb:

    TerminateThread

    Ist unsauber, sollte man nicht verwenden!

    Komm plapper nicht Jochen nach, die Funktion gibt es und das hat auch seinen Grund.



  • ja also mit "bei der laufzeit deklarieren" meine ich:

    CAlarm Alarm;

    void Alarm.Run(void) {}

    das.

    aber ist das richtig udn wie geht das genau?

    danke schonmal.



  • häh schrieb:

    CodeFinder schrieb:

    häh schrieb:

    TerminateThread

    Ist unsauber, sollte man nicht verwenden!

    Komm plapper nicht Jochen nach, die Funktion gibt es und das hat auch seinen Grund.

    Troll


  • Mod

    TerminateThread regulär zu verwenden ist unverantwortlich!

    Nehmen wir nur mal ein ein Thread verwendet eine eigene Funktion oder OS Funktion die intern einen Mutex oder eine CriticalSection blockiert und nun kommt ein anderer Thread daher und sagt TerminateThread...
    Wenn alles gut geht hängt sich nur die eigene Applikation auf.

    Nur aus der Existenz einer Funktion zu schließen, dass jeder diese Funktion jederzeit aufrufen kann ist ziemlich ignorant.
    Das hat nichts mit nachplappern zu tun sondern mit Nachdenken und Intelligenz... 🕶



  • achso, also mit kontrollstrukturen arbeiten.

    aber was mache ich jetzt mit meinem Wecker? <== darum geht's ja eigentlich.



  • Martin Richter schrieb:

    TerminateThread regulär zu verwenden ist unverantwortlich!

    Nehmen wir nur mal ein ein Thread verwendet eine eigene Funktion oder OS Funktion die intern einen Mutex oder eine CriticalSection blockiert und nun kommt ein anderer Thread daher und sagt TerminateThread...
    Wenn alles gut geht hängt sich nur die eigene Applikation auf.

    Nur aus der Existenz einer Funktion zu schließen, dass jeder diese Funktion jederzeit aufrufen kann ist ziemlich ignorant.
    Das hat nichts mit nachplappern zu tun sondern mit Nachdenken und Intelligenz... 🕶

    Man benutzt TerminateThread auch nur, wenn man weiß, daß der Thread so etwas nicht tut. Wer soweit nicht denken kann, ja, der sollte die Funktion lieber nicht nutzen. Ich weiß aber, was meine eigenen Threads tun und wann es gut ist sie zu terminieren. Die Funktion hat schon seinen Sinn.



  • threadfunktion

    while !threadBeenden {
        tu das wecker zeug
    }
    

    ...
    andere funktion zum beenden

    if buttonGedrückt
       threadBeenden = true
    


  • So eine Variable kannst du nicht aus einem anderen Thread heraus setzen, da bekommst du Problem wegen Caching. Da muss die Variable volatile sein.



  • häh schrieb:

    Man benutzt TerminateThread auch nur, wenn man weiß, daß der Thread so etwas nicht tut.

    Wie lächerlich - hm, ich hoffe das niemand in den 'Genuss' Deiner Programme kommt; tu der Allgemeinheit einen Gefallen und behalte Deine schlechten Ratschläge für Dich 👎 .

    @Script-Styler: eyeoftherollingstone hat das Prinzip jetzt eigentlich verdeutlicht, verstehst Du jetzt wie man das umsetzt?



  • Wollte nur ein wenig provozieren. :p



  • häh schrieb:

    Wollte nur ein wenig provozieren. :p

    Ok, gelungen 😃 .



  • CodeFinder schrieb:

    häh schrieb:

    Man benutzt TerminateThread auch nur, wenn man weiß, daß der Thread so etwas nicht tut.

    Wie lächerlich - hm, ich hoffe das niemand in den 'Genuss' Deiner Programme kommt; tu der Allgemeinheit einen Gefallen und behalte Deine schlechten Ratschläge für Dich 👎 .

    @Script-Styler: eyeoftherollingstone hat das Prinzip jetzt eigentlich verdeutlicht, verstehst Du jetzt wie man das umsetzt?

    Wer macht sich wohl lächerlich? Ich programmiere seit Windows 98 mit WinAPI und behaupte mal daß ich mich gut genug auskenne. Wenn TerminateThread keinen Sinn hätte, gäbe es die Funktion nicht. Also erzähl mir keinen vom Pferd. Sie ist ein bequemes Mittel, wenn man weiß, was man tut. Als Amateur sollte man sie aber in der Tat nicht verwenden, also lass' die Finger davon. Und jetzt schluß mit dieser Diskussion Leute, das ist Offtopic.



  • häh schrieb:

    Wenn TerminateThread keinen Sinn hätte, gäbe es die Funktion nicht.

    Das ist falsch! Diese Funktion ist primär für Debugging-Zwecke.



  • häh: Halt's Maul.



  • häh schrieb:

    häh: Halt's Maul.

    Oh ich sehe schon, jetzt kommen die klar strukturierten und gut durchdachten Gegenargumente 😃 . Naja Du Troll, ich halt mich jetzt daraus.



  • ich vermute mal das sich hier mehrere Pesonen den Namen häh teilen.


Anmelden zum Antworten