Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
Delphi 12 Athens
|
AW: Synchronize oder ForceQueue ohne Messages
18. Jun 2021, 10:21
Naja ich habe keinen deadlock.
Aber um den Singlethread Zugriff sicherzutsellen, habe ich alle Datenbankzugriffe (SQLITE) in einer TCriticalsection eingerahmt.
Wie es scheint kommt es auch immer nur zu zugriffen aus einem einzigen thread heraus zur selben zeit aber naturlich aus verschiedenen anonymen threads wenn es länger dauert.
In der Zeit(wenn es länger dauert) sperre ich die Oberfläche mit nem halbdurchsichtigen Lockscreen mit Fortschrittsanzeige.
So das auch wirklich kaum weitere Ereignisse auf der Oberfläche ausgelöst werden können die wieder so eine Datenbank interaktion auslösen.
Außer timer, Application Lifecycleevents und NFC-Events.
So wie ich das verstanden habe ist der einzige Teil der im Hauptthread ständig so ne Art Spinwait durchführt die MessageQueue. Deswegen arbeiten Synchronize und ForceQueue wohl auch mit Messages um dem Hauptthread zu sagen das was ausgeführt werden soll, wenn er mal wieder dran ist.
Ist das wirklich die einzige Möglichkeit?
Andreas Monads? Wtf are Monads?
Geändert von QuickAndDirty (18. Jun 2021 um 10:27 Uhr)
|