![]() |
CS vs Lightweight-MREW vs LeightweightMREW_EX
Ich möchte in eienm Client eine Resource(Informationen über den Server) Zeitlich begrenzt global cachen.
Es wird viele Lesezugriffe aus anderen Threads, aber nur sehr sehr selten Schreibzugriffe aus anderen Threads geben. Wie verhält es sich mit der Geschwindigkeit von zu
Delphi-Quellcode:
zueinander
System.SyncObjs.TCriticalSection
System.SyncObjs.TLightweightMREW TLightweightMREWEx //https://github.com/gabr42/examples/blob/master/Reader-writer%20lock/LightweightMREWEx.pas Besteht das Deadlock Problem bei Double BeginWrite noch für TLightweightMREW ? |
AW: CS vs Lightweight-MREW vs LeightweightMREW_EX
Es gibt auch im Delphi seit Jahrzehnten einen
![]() Geschwindgkeit kann ich nicht sagen, aber natürlich ist das bissl langsamer. So ist oftmals die CriticalSection auch bissl langsamer, als t.B. das TMonitor (aus der System-Unit, nicht zu verwechseln mit TMonitor der VCL) Wobei die CriticalSection aber auch andere Vorteile hat, z.B. schreibt sie ins Log und man kann live oder nachträglich analysen drüber auswerten. Beim Verschachteln muß man aber echt aufpassen, dass man sich keinen Deadlock einbaut. Innerhalb einer Schreitsperre eine neue Lesesperre, ist kein Problem (so lange im selben Thread) aber innerhalb einer Lesesperre noch eine Schreibsperre öffnen zu wollen, das gibt Probleme, wenn es nicht nur eine einzige Stelle gibt, die sowas macht, und sie auch nie mehrmals gleichzeitig ausgeführt werden tut. |
AW: CS vs Lightweight-MREW vs LeightweightMREW_EX
TMREWSYNC ist sehr aufwändig.
LeightweightMREW verwendet die Betriebsystem-Umsetzung. soll sehr schnell sein, angeblich vor allem für kurze locks weil es spinlocks verwendet. Habe mir das jetzt genau angesehen... also es ist immernoch deadlock gefährdet... also werde ich wohl die version verwendeten die nen Wrapper dafür darstellt der Deadlocks verhindert. |
AW: CS vs Lightweight-MREW vs LeightweightMREW_EX
Achtung: TLightweightMREW unterstützt keine reentranten BeginWrites, es gibt aber eine Erweiterung hier
![]() ![]() |
AW: CS vs Lightweight-MREW vs LeightweightMREW_EX
Ja steht doch auch im Kommentar im Code im Eröffnungspost.
|
AW: CS vs Lightweight-MREW vs LeightweightMREW_EX
Sorry, das muss an meiner Grünblindheit liegen. :pale: :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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