Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
20. Jan 2021
Nur solange das Befüllen beendet ist sobald das Lesen los geht. Beim Add könnte das implementierende Array der Liste neu zugewiesen werden. Das ohne Synchronisation durchzuführen wäre mir zu heikel. Selbst wenn das aktuell safe ist, könnte sich die Implementierung in Zukunft ja ändern.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
19. Jan 2021
Lös dich doch mal von deinem Thread, der mehrere Einträge aus einer temporären Liste bearbeitet.
Das TParallel.For behandelt alle Listeneinträge von 0 bis Count - 1 (Danke Sebastian), wobei die Arbeit an einem Eintrag innerhalb der anonymen Methode erfolgt.
Stell dir das erstmal wie bei einer ganz normalen Schleife vor:
for I := 0 to MainProcessFileList_ObjectList.Count - 1 do
begin
...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Uwe Raabe,
19. Jan 2021
TParallel.For hat eine Überladung mit einem Stride Parameter. Damit ließe sich das im genannten Beispiel so lösen:
TParallel.For(125, 1, 1000,
procedure(Index: Integer)
begin
{ Bearbeite Listeneintrag }
end
);