AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein CS vs Lightweight-MREW vs LeightweightMREW_EX
Thema durchsuchen
Ansicht
Themen-Optionen

CS vs Lightweight-MREW vs LeightweightMREW_EX

Ein Thema von QuickAndDirty · begonnen am 19. Mär 2024 · letzter Beitrag vom 20. Mär 2024
Antwort Antwort
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#1

CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 19. Mär 2024, 13:21
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:
System.SyncObjs.TCriticalSection
System.SyncObjs.TLightweightMREW
TLightweightMREWEx //https://github.com/gabr42/examples/blob/master/Reader-writer%20lock/LightweightMREWEx.pas
zueinander

Besteht das Deadlock Problem bei Double BeginWrite noch für TLightweightMREW ?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 19. Mär 2024, 14:27
Es gibt auch im Delphi seit Jahrzehnten einen Delphi-Referenz durchsuchenTMREWSync / TMultiReadExclusiveWriteSynchronizer.
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#3

AW: CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 19. Mär 2024, 14:46
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.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#4

AW: CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 19. Mär 2024, 18:58
Achtung: TLightweightMREW unterstützt keine reentranten BeginWrites, es gibt aber eine Erweiterung hier
https://www.thedelphigeek.com/2021/0...511-46172.html
https://www.thedelphigeek.com/2020/1...2-impleme.html
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#5

AW: CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 20. Mär 2024, 11:40
Ja steht doch auch im Kommentar im Code im Eröffnungspost.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty (20. Mär 2024 um 11:48 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.094 Beiträge
 
Delphi 12 Athens
 
#6

AW: CS vs Lightweight-MREW vs LeightweightMREW_EX

  Alt 20. Mär 2024, 12:47
Sorry, das muss an meiner Grünblindheit liegen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz