Die
SubList muss ich wohl übersehen haben... Und muss man dieses Exemplar dann nicht wieder freigeben?
Ich wollte nicht behaupten, dass Arrays threadsafe sind, aber sie sind, im Gegensatz zu einem zustandsbehafteten internen Iterator, immerhin treadable. Falls Dich das Thema interessiert, sieh Dir mal das
iterator pattern (GoF) an, bei dem beliebig viele externe Iteratoren mit ihren unabhängigigen Stati und einer Referenz auf die zu iterierene Liste gehalten werden können...
Eine Lösung könnte dann zB so aussehen (wenn die Iteratoren mit einer Referenzzählung ausgestattet sind)
Delphi-Quellcode:
with myList.Iterator do
while HasNext do
DoSth(Next);
bzw
Delphi-Quellcode:
with myList.Iterator do
with HasNext do
begin
myItem:= Next;
with myList.Iterator(myItem) do
while HasNext do
DoSth(myItem, Next);
end;