Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
3. Apr 2014
Ich finde deine Implementation von TerminatedSet verdient nochmal besondere Beachtung: Der Thread schläft und wartet auf das Event. Ruft man meinThread.Terminate() auf passiert nichts, da er schläft. Das Setzen des Events weckt ihn auf und er merkt, dass seine Zeit gekommen ist.
TThread.Terminate() ist nicht virtuell, wohl aber die undokumentierte Methode TerminatedSet(). Eigentlich ein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
19. Feb 2014
Nur wie gesagt, ich bin da jetzt kein Spezialist für, aber je nachdem, wie "async"-verdorben man schon ist und wie oft man so etwas macht, wäre es vielleicht besser, sich einmal so einen Thread anzulegen, der dann dafür immer mittels Event aufgeweckt wird. Vielleicht noch den "Delay", wann es reingequeued wird, einstellbar machen :stupid:
Aber ganz ehrlich, ja, so mache ich das auch :wink:
...
Forum: Algorithmen, Datenstrukturen und Klassendesign
Delphi
by Der schöne Günther,
19. Feb 2014
Harte Worte, harte Herzen.
Aber hat mich auch schon gewundert. Ich habe mir immer einen anonymen Thread erstellt (und gestartet) der nichts anderes macht, als den Kram wieder in den Hauptthread zurück-zu-queuen. Ressourcenschonend ist das nicht aber naja.
Aber wahrscheinlich baut man sich besser selber eine eigene Queue und arbeitet die im Application.OnIdle oder sowas ab.