![]() |
AW: Threads (tpIdle) blokieren Anwendung
Nach der letzten Anregung und etwas grübeln habe ich folgende Lösung integriert:
- jeder Thread erhält ein Signal - statt den einfachen Sleep-Aufrufen wartet ein Thread nun auf das Signal oder eine bestimmte Zeit (ähnlich wie beim Sleep). Die "Wait"-Zeit habe ich höher gesetzt als bei den Sleep-Aufrufen, damit gibt es weniger Blockaden durch synchronisierte Abschnitte. - Ist der Hauptthread ohne Arbeit (OnIdle-Ereignis) oder sollen die Threads beendet werden, so werden die Signale abgefeuert, so dass die Threads gar nicht warten müssen. Die ersten Tests waren vielversprechend und die Berechnungen sind im Idle-Fall sogar schneller als vorher... |
AW: Threads (tpIdle) blokieren Anwendung
Zitat:
Mit der Aktualisierung in einem Formular würde Ich das lösen, in dem ich dem Hauptformular per 'PostMessage' ein paar Daten zur Anzeige schicke: Der Thread instantiiert ein Datenobjekt, das er mit Daten füllt. Per PostMessage geht es dann zum Hauptthread (dem Formular z.B.) welches das Objekt übernimmt, anzeigt und zersört. Das ist asynchron.
Delphi-Quellcode:
dürfte so oder ähnlich arbeiten.
TThread.Queue
Du solltest allerdings nicht beliebig viele Synchronize/Queue/PostMessage-Aufrufe durchführen. Alleine damit kann man sich sein System blockieren. |
AW: Threads (tpIdle) blokieren Anwendung
Zitat:
Zitat:
|
AW: Threads (tpIdle) blokieren Anwendung
Zitat:
Zitat:
|
AW: Threads (tpIdle) blokieren Anwendung
Gut. Ich hatte mich spät eingelesen und wollte nur wichtigtuerischen Senf dazugeben.
[x] gut erkannt, BUG ;-) |
AW: Threads (tpIdle) blokieren Anwendung
Nur der Vollständigkeit halber, Manfred D2009s Lösung passt vermutlich besser zu seinem Problem:
Zitat:
Zitat:
Zitat:
Ich hatte nach der Lektüre ![]() Falls also jemand eine niedrig-priore Nachricht aus Threads schicken will, so könnte (höchst ungetestet / nicht implementiert) es gehen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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