Einzelnen Beitrag anzeigen

Benutzerbild von ich2
ich2

Registriert seit: 7. Dez 2005
Ort: Würzburg
54 Beiträge
 
#1

TParallel.for innerhalb iTask

  Alt 12. Aug 2019, 23:44
Hallo zusammen,

mir ist da etwas merkwürdiges aufgefallen und da wollte ich mal in die Runde fragen...

Hintergrund ist folgender: per Webcam wird ein Videostream verarbeitet, wobei dabei mehrere Filter und so weiter über die Einzelbilder geschmissen werden. Damit das ganze flott läuft sind die Filter oftmals mit TParallel.for Schleifen versehen.
Parallel zu der Bildverarbeitung läuft noch ein Scripting-Tool, welches u.a. auf externe Geräte zugreift.
Damit es nicht zu unnötigen Kollisionen und ruckeliger GUI kommt, wird das Script innerhalb einer Task abgearbeitet.
Über das Script nun werden dann auch Funktionen für die Datenauswertung verwendet, welche wiederum mit TParallel.For Schleifen beschleunigt werden.

Das ganze läuft soweit eigentlich ganz gut...aber nach einiger Zeit wird das ganze System immer träger und schließlich dauern die Bearbeitungsschritte immer länger...ein Blick in den Process Explorer zeigt, dass es nicht am Speicher liegt, sondern an der immer weiter wachsenden Anzahl an Threads, welche zu dem Programm gehören.

Also dann mal schnell ein Test (siehe unten) aufgesetzt und tatsächlich:
wenn zu schnell versucht wird, die Tasks aufzurufen bevor die Arbeit gemacht ist, dann kommen immer mehr Threads dazu...

Jetzt die Frage...was kann man dagegen tun?

besten Dank
Angehängte Dateien
Dateityp: rar TParallel_TTask_issue.rar (52,7 KB, 11x aufgerufen)
Wissen ist Macht. Das ändert aber so gut wie nichts an der Übermacht der Dummheit.
  Mit Zitat antworten Zitat