AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TDictionary beim lesen thread-safe?

Ein Thema von AndyDF · begonnen am 14. Jun 2016 · letzter Beitrag vom 15. Jun 2016
Antwort Antwort
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#1

TDictionary beim lesen thread-safe?

  Alt 14. Jun 2016, 10:45
Delphi-Version: 10 Seattle
Hallo,

mir ist klar, dass ein TDictionary beim Schreiben nicht thread-safe ist.

Die Frage ist aber, kann ich von verschiedenen Threads lesend auf ein TDictionary zugreifen?

Also mit den Methoden:
- TryGetValue
- ContainsKey
- ...

Ich habe das Gefühl, dass genau das bei mir manchmal zum Problem führt.

Inhalt des Dictionaries sind nur Integer, String und TGUID (dies evtl. noch kombiniert in einem Record). Also keine Objekte die verändert werden könnten.

Viele Grüße,
Andreas
Andreas Blenk
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: TDictionary beim lesen thread-safe?

  Alt 14. Jun 2016, 10:53
Ohne etwas genaues zu wissen, ich wüsste nicht weshalb das ein Problem sein sollte. Solange es auch wirklich "read only" ist.

Kannst du Beispiel-Code geben der irgendwie unerwartetes Verhalten zeigt?
  Mit Zitat antworten Zitat
AndyDF

Registriert seit: 6. Sep 2006
Ort: Allgäu
99 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TDictionary beim lesen thread-safe?

  Alt 14. Jun 2016, 11:19
Das hätte ich auch angenommen. Das reines "read-only" funktionieren sollte.

Leider kann ich keinen Code liefern, der auf meinen Fehler deuten kann. Da doch einiges an der Stelle abläuft und ich auch nicht sicher bin, ob es überhaupt damit zusammen hängt.
Deshalb wollte ich dies erst mal grundsätzlich abklären, ob ein read-only zugriff problemlos möglich sein sollte.
Andreas Blenk
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TDictionary beim lesen thread-safe?

  Alt 14. Jun 2016, 12:37
Sofern das Dictionary z.B. einen privaten Positionszeiger o.ä. für die Suche verwendet könnte es natürlich schon Probleme geben.
Da heißt: Du greifst zwar nur lesend zu, aber intern wird dabei auf den gleichen Speicherplatz mehrfach geschrieben.

Bleibt also wohl nur, genauer in der Hilfe oder im Quelltext nachzusehen (kann ich gerade nicht tun).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: TDictionary beim lesen thread-safe?

  Alt 15. Jun 2016, 16:38
Was für einen Fehler hast Du denn? Sichere doch den Zugriff mit einer CriticalSection ab.
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.142 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: TDictionary beim lesen thread-safe?

  Alt 15. Jun 2016, 16:44
Was für einen Fehler hast Du denn? Sichere doch den Zugriff mit einer CriticalSection ab.
TMonitor
  Mit Zitat antworten Zitat
taveuni

Registriert seit: 3. Apr 2007
Ort: Zürich
533 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TDictionary beim lesen thread-safe?

  Alt 15. Jun 2016, 17:15
Nein Danke.

https://www.delphitools.info/2013/06...iticalsection/

Aber klar - ist vermutlich Glaubenssache (siehe meine Signatur) und sowieso OT.

Edit: Wenn schon TFixedCriticalSection
Die obige Aussage repräsentiert meine persönliche Meinung.
Diese erhebt keinen Anspruch auf Objektivität oder Richtigkeit.

Geändert von taveuni (15. Jun 2016 um 17:16 Uhr) Grund: Hinweis auf TFixedCriticalSection hinzugefügt
  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 06:56 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