Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

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

AW: Unterschied TTread.Synchronize / TThread.Queue

  Alt 19. Jul 2015, 21:43
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat