Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.035 Beiträge
Delphi 12 Athens
|
AW: Große Textdateien spitten
30. Okt 2017, 11:15
Darum liest nur Einer die Datei und gibt die Zeilen an die Threads weiter. (1)
Oder man macht z.B. eine CriticalSection um den Lesebefehl, bei jedem Thread. (2)
Außerdem ist es blöde ungünstig Einzelzeilen weiterzureichen/zu lesen.
Wenn sich jeder Thread (2) mehrere Zeilen holt und sie dann verarbeitet, bis er sich den nächsten Pack holt,
oder wenn man mehrere Zeilen z.B. in eine Liste/Array einfügt und diese Listen dann an einen der Threads übergibt (1 ... also Liste abarbeiten und dann Freigeben)
oder wenn man jeder Thread schon eine Liste/Array hat und der Lesethread diese Liste dann regelmäßig mit mehreren Zeilen befüllt, wenn die Liste leer oder zu leer ist (2) ...
> So kann man die Sperrenden Zugriffe verringern.
In neueren Delphis gibt es nicht nur Threads, sondern auch Tasks, da kann man z.B. jeweils 100 Zeilen Lesen und dafür erstellt man eine Task und diese Tasks lässt man dann z.B. in 4 Threads abarbeiten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
Geändert von himitsu (30. Okt 2017 um 11:17 Uhr)
|