AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Mehrere Threads nur lesend auf ein TArray<TEinRecord> mit oder ohne Synchronize?
Thema durchsuchen
Ansicht
Themen-Optionen

Mehrere Threads nur lesend auf ein TArray<TEinRecord> mit oder ohne Synchronize?

Ein Thema von bernau · begonnen am 12. Mär 2025 · letzter Beitrag vom 12. Mär 2025
 
QuickAndDirty

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

AW: Mehrere Threads nur lesend auf ein TArray<TEinRecord> mit oder ohne Synchronize?

  Alt 12. Mär 2025, 10:48
Ich habe ein TArray<TIrgendeinRecord>. TIrgendeinRecord kann grundsätzlich alle möglichen Simple Datentypen beinhalten.

Dieses Array wird einmalig mit Daten gefüllt. Um die Hunderttausend Einträge. Danach werden mit diesen Daten nur noch Auswertungen durchgeführt. Also nur lesend.

Ich würde nun gerne mit mehrere Threads die Auswertungen parallel durchführen. Da sichergestellt ist, dass die Daten nicht geändert werden, sollte es doch möglich sein, auf die Daten ohne TThread.Synchronize zuzugreifen. Oder?

Ich habe natürlich schon vorher mal gegoogelt. Aber da teilen sich die Meinungen sehr. Außerdem sind viele Infos sehr alt und vielleicht gibt es ja in neuen Delphi-Versionen neue Techniken, die ich einfach übersehen habe.
Es müsste gehen. Aber du kannest es auch mit einem Syncobjs.TMREW absichern (Multiple Read , Single Write).
Das beste ist immer wenn die Daten in den Thread übergibts und dann im Hauptthread keine Referenz mehr auf diese daten verweist. Dann kannst du sicher sein, dass die daten nicht aus dem Huaptthread zugegriffen werden. Bei Abschluss des Threads kann der thread ja auch eine Referenz auf die Daten wiedergeben...dann braucht es kein zugriffsmanagement über CS oder MREW.
Bei mehreren Threads müste es möglich sein Referenzen zu übergeben die nur bestimmte Teile der Daten sehen können bzw. das sicherste sind halt immer kopien aber das ist ja mit etwas overhead verbunden...
Andreas
Nobody goes there anymore. It's too crowded!
  Mit Zitat antworten Zitat
 


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 08:39 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