Forum: Algorithmen, Datenstrukturen und Klassendesign
by Der schöne Günther,
11. Nov 2019
Ich denke der TMultiReadExclusiveWriteSynchronizer ist eine angemessene Lösung wenn man wirklich die Aufgabenstellung hat wenn ein Wert über mehrere Threads abgesichert werden muss und hierbei sehr oft gelesen, aber nur selten geschrieben wird. Klar war dein Beispiel konstruiert, aber das Sleep(50) ließ jetzt auf eine eher häufige Änderung schließen. Ein 100%iges Versprechen Deadlocks zu...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Der schöne Günther,
7. Nov 2019
Was ich meinte: Angenommen wir nutzen unsere Sperre nicht nur für das Setzen des Wertes sondern auch führ das Ausführen der Events, also z.B. der Aktualisierung deines Formulars. Aus Sperre.Betreten()
try
wert = neuer wert
finally
Sperre.Verlassen()
end; wird also
Sperre.Betreten()
try
wert = neuer wert
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Der schöne Günther,
7. Nov 2019
Weil es hochtheoretisch sein könnte dass jemand in der Zwischenzeit zwischen "if" und "then" aus einem anderen Thread setOnChange(..) aufruft und einen anderen Handler (oder garkeinen) setzt. Dann würdest du im "then"-Teil einen leeren Funktionszeiger aufrufen wollen und es gäbe eine Zugriffsverletzung.
Könnte man das OnChange nicht mittendrin ändern (z.B. würde es nur einmal im Konstruktor...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Der schöne Günther,
7. Nov 2019
Das sind im Endeffekt ja viele verschiedene Fragen auf einmal.
Ich denke bei den wenigstens Anwendungen ist das wirklich interessant ob im Hintergrund eine TCriticalSection, ein TMonitor, ein TMultiReadSonstwas zum Einsatz kommt. Die paar Nanosekunden sparen wir uns an dieser Stelle am besten vorerst...
Ich finde das ziemlich kompliziert gelöst. Erstens finde ich es fehl am Platz dass der...