Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
11. Okt 2022
OnIdle prüfen
TApplicationEvents
z.B. Messen wie lang ein Verarbeitungsdurchlauf dauert
GetTickCount, QueryPerformanceCounter, TStopwatch oder sonstwas
oder die CPU-Auslastung des Hauptthreads messen
GetSystemTimes
Und da der Hauptthread ja auch nur ein Thread ist, ist es nicht verboten TThread zu benutzen, und dort gibt es seit 'ner Weile so Einiges
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
11. Okt 2022
Ja genau.
Wenn dein Hauptthread nur so viel Daten aus dem Thread nimmt, wie er verarbeiten kann und dann immernoch etwas Zeit hat,
oder er nimmt sich z.B. 20 Dinge aud dem Array/Queue raus und macht dann immer mal einen kurzen Sleep Delay)
dann läuft der Cache (dein Array/Queue) zwar langsam voll, wenn mal zu viel rein kommt, aber das Programm reagiert immernoch.
Andersrum kann der Thread...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
10. Okt 2022
Da has du doch schon das eigentliche Problem?
Die Arbeit im Hauptthread muß weniger sein, als wie die Zeit bis zu den nächsten Daten.
entweder die Arbeit beschleunigen,
oder weniger Daten senden
oder z.B. statt Array eine threadsave Queue/Liste, wo sich der Hauptthread so schnell/langsam Daten raus holt, wie er kann
und das Mehr an Daten drin bleibt, bis er Zeit hat.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by himitsu,
10. Okt 2022
Warum so schnell?
Wer liest denn 10 Mal jede Sekunde alles?
sekündlich?
Oder gibt dem Hauptthead erst wieder was, wenn er fertig ist.
z.B. der Hauptthread gibt Bescheid, wenn er fertig ist und x Millisekunden/Sekunden später wird die neue Nachricht geschickt
* der Hauptthread nutzt ein Event, um dem Thread Bescheid zu sagen