Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: TObjectList-Einträge auf meherere Threads aufteilen

  Alt 19. Jan 2021, 11:50
Für die Verteilung auf die Threads hat Uwe ja schon eine Lösung genannt. Da reicht es die Indizes irgendwie zu verteilen, egal ob auf dem Weg oder anders, da die Liste bei reinen Lesezugriffen threadsicher ist.

Ich habe eine TObjectList die eine Dateiliste repräsentiert.
Ich möchte basierend auf dieser Liste gerne Threads erstellen.
Beispielzahlen: 1000 Dateien, 8 Threads. Jeder Thread verarbeitet 125 Dateien.
Wie stellt man das am besten an? Ich meine nicht rechnerisch sondern das Erstellen der Threads, ohne temporäre Zwischenlisten.
Temporäre Zwischenlisten sind bei normalen Festplatten der bessere Weg. Ein Thread geht die Liste durch, lädt nur stur die Dateien und übergibt diese geladen an die Threads zur Verarbeitung. So kann man die Leserate der Festplatte am besten ausnutzen.
Denn wenn du einfach nur auf 8 Threads verteilst, wird das ganze eher noch langsamer als vorher, wenn die Verarbeitung einer Datei nicht gerade ein Vielfaches der Lesezeit von der Festplatte benötigt.

Bei SSDs könnte man auch beim Lesen der Dateien parallele Zugriffe versuchen, aber auch nicht unbeschränkt viele, da kommt es auf die Größe der Dateien an wo hier Optimierungspotential ist.

Man könnte auch mit MMFs arbeiten um Windows so eine Optimierung der Zugriffe zu ermöglichen, wenn es sich um große Dateien handelt.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat