Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
21. Jul 2015
TThread.CreateAnonymousThread gibt es allerdings auch noch. ;-)
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
21. Jul 2015
Ja, sicher, TParallel ist nur ein kleines Hilfsmittel für kleine Aufgaben um die leichter in Threads zu packen, aber für umfangreichere Aufgaben lohnt sich eher eine Umsetzung mit eigenen Threads oder Tasks.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
19. Jul 2015
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: MessageBox(0, 'Vorher', 'Test', 0);
TParallel.For (1,2, procedure (i:Integer)
begin
MessageBox(0, PChar(i.ToString), 'Test',...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by jaenicke,
19. Jul 2015
Du bleibst ja während der Ausführung der einzelnen Threads im Hauptthread im Aufruf von TParallel.For. Deshalb können die anderen Threads in dieser Zeit auch nicht mit dem Hauptthread synchronisieren, da der gleichzeitig auf die einzelnen Schleifenthreads wartet.
Das ist ein klassischer Deadlock.