Du kannst das in deinem Beispiel sehen, wenn du nach dem TParallel.For einfach noch eine Zeile
ListBox1.Items.Add('Ende');
einfügst.
Das wird dann als erstes in die Liste eingefügt und erst später die Einträge aus dem Parallel.Loop. Daraus kann ich dann folgern, dass ich die ganze Zeit noch im Mainthread war, oder?
Wenn du Queue benutzt, werden die
Threadinhalte tatsächlich erst hinterher ausgeführt. Das liegt aber nicht daran, dass die
Schleifeninhalte hinterher ausgeführt werden, sondern an der Auskoppelung durch Queue.
Das kannst du sehr gut an diesem Beispiel sehen:
Delphi-Quellcode:
MessageBox(0, 'Vorher', 'Test', 0);
TParallel.For (1,2, procedure (i:Integer)
begin
MessageBox(0, PChar(i.ToString), 'Test', 0);
end);
MessageBox(0, 'Nachher', 'Test', 0);
Du wirst sehen, dass die Messagebox "Nachher" erst angezeigt wird, wenn die beiden anderen bestätigt sind. Das kannst du aber ja auch einfach mit einem Haltepunkt sehen.