@Green: Ich sage es ja nur ungern. Aber das Threadbeispiel ist schlecht oder zu mindest extrem ungünstig. Hier mal ein paar Punkte die ich daran auszusetzen habe.
- Wie du ja selber merkst rauschen die Ereignisse von den Threads so schnell durch, dass sie die Verarbeitung von Windowsbotschaften behindern. Ergo deine Anwendung wird richtig ausgebremmst. Das bringt mich zum zweiten Punkt.
- Die Threads arbeiten mit der
VCL /
GDI. Daher
müssen alle Aufrufe synchronisiert werden. Da gibt es kein vielleicht! In dem Beispiel ist es sogar noch so, dass außer der
VCL nichts anderes gemacht wird. Also stehen die Thread zu ca 99% (+-1%) ihrer Zeit in einem Synchronize. Und das ist vollkommen unsinnig bzw. praxisfern. Denn Threads sind dazu da um Arbeiten zu paralelisieren. In dem Falle reihen sich alle nacheinander in einer Schleife ein.
Klar. Man muss zwar mal manchmal synchronisieren aber das sollte auf ein Minimum reduziert werden. Threads leben dadurch, dass sie "selbsttätig" arbeit verrichten. Durch andauerndes Synchronize wird dies verhindert.
- Die Prioritäten als Trackbar ist mit Vorsicht zu genießen. Ich weiß nicht genau wie sich das in dem Fall äußert, wenn man die Priorität auf Echtzeit setzt. Aber in Abhängigkeit der Prozesspriorität wird die Priorität des Threads etwas erhöht. Da gibt es von MS irgendwo eine genaue Liste, denn die Priorität ist eigentlich ein Wert von 1-31 oder so was in dem Dreh. Eine zu hohe Priorität kann auch dazu führen, dass dein Fenster ausgebremmst wird. Und in diesem Beispiel denke ich sogar, dass die unterschiedliche Prioritäten sich nicht wirklich zeigen dürften. Denn die Threads stehen ja eigentlich nur im Synchronize. Und das hat mit dem
VCL Thread wieder eine normale Priorität. Also ist die Einstellung der Priorität eigentlich wieder futsch.
- Wurde schon mal erwähnt. Im Execute ein
while true do ist ungünstig. Da sollte man lieber mit Terminated arbeiten, da man die Threads ansonsten nur gewaltsam abschießen muss. Und das ist selten Sinn des Erfinders. Zu mal die in deinem Beispiel nicht mal freigegeben werden.
Mein Rat an dich ist also folgender. Stecke nicht zu viel Energie in dieses Beispiel, da es in meinen Augen nicht günstig und für die Praxis absolut nicht brauchtbar ist. Schau dir an was dort gemacht wird aber nimm es nicht zu wörtlich oder übertrage es so in deine Anwendungen.