![]() |
Wie eine solche Thread-Problematik elegant lösen?
Delphi-Quellcode:
Natürlich kann man das mit Timern, globalen Variablen oder Threads die sich (erst sobald sie fertig sind) dann wieder gegenseitig aufrufen, mehr oder weniger unelegant lösen. Doch gibt es auch einen eleganten Weg? Es so wie oben zu schreiben bringt ja nichts, Delphi übergeht alles was zwischen den Threads ist und startet die einfach alle gleichzeitig.
BeginThread(....)
//Warte nun bis Thread fertig ohne Form einzufrieren weitere normale Befehle... BeginThread(....) //Warte nun bis Thread fertig ohne Form einzufrieren weitere normale Befehle... (Wozu das ganze? Einige werden sagen: "Threads sind doch gerade dazu da, alles gleichzeitig zu machen, darauf zu warten oder solch eine Konstruktion ist doch Unsinn". Naja, manchmal würde man am liebsten gar keine Threads nutzen, sondern normalen "Spaghetti Code", braucht die Threads aber, weil sonst die Form bei starker I/O etc. einfriert. Und dann braucht man eben Konstrukte wie oben.) |
AW: Wie eine solche Thread-Problematik elegant lösen?
Wieso sollte Spaghetti-Code eigentlich besser sein als Threads zu verwenden?
Setz Deine normalen Befehle ebenfalls in einen eigenen Thread und füge eine Nachrichtenverarbeitung hinzu. Synchronisiere Deine Threads und überwache die Zugriffe (z.B. Semaphore) und pausiere die nicht verwendeten Threads, bzw. setze sie in eine Message-Wartesituation und erwecke sie mittels Message wieder zur Weiterarbeit. Das ist, zumindest für mich, wesentlich eleganter als Nudelsalat, egal ob mit oder ohne Würstchen. ;) |
AW: Wie eine solche Thread-Problematik elegant lösen?
Zitat:
|
AW: Wie eine solche Thread-Problematik elegant lösen?
Man kann aber auch auf fertige Threadpool-Bibliotheken zurückgreifen. Einige davon sind hier im Forum zu finden.
|
AW: Wie eine solche Thread-Problematik elegant lösen?
Zitat:
|
AW: Wie eine solche Thread-Problematik elegant lösen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz