Welcher Guru kann mir sagen was besser ist: Timer oder Thread?



  • Mir sind Threads lieber weil Sie viele Vorteile haben.

    1. Entlasten sie den Hauptthread unter dem das Programm läuft.
    2. Sind Sie (wie ich finde) leichter zu handhaben als Timer.

    Auf der anderen Seite gibt es den Timer sicherlich cniht umsonst.
    Der Timer muss ja Vorteile gegenüber einem Thread mit einem Sleep haben, da er ansonten cniht erfunden worde wäre..
    Oder besteht die 'Besonderheit' des Timers nur darin, dass er keinen Zusatzthread erzeugt und somit Systemressourcen schont??

    PS: mal abgesehen von dem Minimalwert von Sleep! Welcher ist besser?

    Mfg.



  • Kommt immer auf die Situation an. Das kann man überhaupt nicht verallgemeinern.



  • Was ist besser, Äpfel oder Birnen?

    Was hat ein Thread (der, wenn man nicht aufpaßt, sehr viele Stolperstellen (Stichwort: Thread-Synchronität) haben kann) mit einem Timer zu tun?



  • er meint doch bestimmt einen Thread ala

    while(TRUE)
    {
        Sleep(ZEIT);
        MachWas();
    }
    

    gegenüber einem Timer.



  • Genau so einen mein ich.
    Das könne man nicht so verallgemeinern??
    Na dann kann man es auch nciht verallgemeinern, indem man sagt es ist Situationsabhängig...
    Welche Situationen?? Ich ahbe das Gefühl die Antwortenden wissen selbst nciht genau und versuchen sich rauszureden indem sie sagen, es könne nciht gesagt werden (wieder mal so ne schöne Verallgemeinerung).

    Nicht alles müsst ihr wissen. Ein "Ka ich benutze immer dies und das" würde genügen...

    da ich Neuling bin in der WINAPI frag ich sowas immer damit ich mir nicht gerade den schelchtesten Stil aneigne...



  • Also da muss man abwägen...
    Der große Vorteil von Threads ist, dass sie vollkommen unabhängig von anderen Threads sind.
    Der große Nachteil von Threads ist, dass sie vollkommen unabhängig von anderen Threads sind.

    Wenn du dir unbedingt die - nicht immer einfache - Arbeit machen willst, und den Zugriff auf gemeinsame Variablen synchronisierst, dann nimm ruhig Threads. Oder wenn die Ausführungszeit sehr lang ist (z.B. wenn du auf ein bestimmtes Ereignis warten musst, aber die Benutzeroberfläche trotzdem reagieren soll, dann ist ein Thread auch praktisch. Wenn der Timer-Thread aber nicht viel zu tun hat, dann wäre das wie mit Kanonen auf Spatzen geschossen.
    Schau dir mal ein paar Artikel über die Synchronisationsprobleme bei Threads (oder generell bei paralleler Ausführung) an (Deadlock, Race Condition, Reordering (oder wie das hieß)). Dann erst überlege dir, ob du die Dinger tatsächlich brauchst 😉



  • Tolga schrieb:

    Das könne man nicht so verallgemeinern??
    Na dann kann man es auch nciht verallgemeinern, indem man sagt es ist Situationsabhängig...
    Welche Situationen?? Ich ahbe das Gefühl die Antwortenden wissen selbst nciht genau und versuchen sich rauszureden indem sie sagen, es könne nciht gesagt werden (wieder mal so ne schöne Verallgemeinerung).

    Was schreibst du da für einen Müll?

    Situation 1: du willst eine Uhr in einem Fenster anzeigen. Timer oder Thread?
    Situation 2: du willst ein Fraktal berechnen. Timer oder Thread?
    Situation 3: du willst nach einem Mausclick noch 100ms warten, ob es nicht doch ein Doppelclick war. Timer oder Thread?
    So jetzt nenn mal deine Situation und wir können dir sagen, ob ein Timer vieleicht besser ist.

    Ich glaub im Petzold oder in einem anderen schlauen Buch habe ich mal gelesen, dass man Threads auch nehmen soll, wenn die Verarbeitung von WM_TIMER länger als 10ms dauern würde. Weil sonst die Reaktion auf die Interaktionen des Users zu lange sein würde.


Anmelden zum Antworten