-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
28. Okt 2020
Ok da war der Code vielleicht etwas missverständlich, bei TMyTask handelt es sich nur um den Hack, um auf die Protected AddCompleteEvent-Methode zugreifen zu können.
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
28. Okt 2020
Die Dokumentation und den Code habe ich untersucht, mir geht es mit meinem Thema primär darum zu erfragen, ob jemand die Problematik bereits sauber gelöst hat, oder ob der etwas unschöne Weg über AddCompleteEvent meine einzige Option ist.
Mir ist es nicht gelungen, da TTask eine Instanziierung abgeleiteter Klassen verhindert (siehe TTask.Create).
Viele Grüße,
karlkoch
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
28. Okt 2020
Hallo,
meine aktuelle Lösung sieht folgendermaßen aus:
TMyTask = class(TAbstractTask);
InternalTask := TMyTask.IInternalTask(Task);
InternalTask.AddCompleteEvent(
procedure (Task: ITask)
begin
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
28. Okt 2020
Die PPL ruft diesen Handler, soweit ich das überblicke und testen konnte, jedoch nicht immer auf, z.B. nicht, wenn ein Task noch vor dem Start abgebrochen wird (oder auf dem Weg zwischen Start und Verarbeitung im Workerthread). Sobald ein Scheduler einen Tasks an die PPL schickt (ITask.Start), müsste garantiert werden, dass in jedem Fall ein Handler für diesen Task aufgerufen wird, was meiner...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
27. Okt 2020
Hallo,
an sich bin ich mit der PPL zufrieden, es fehlen nur Kleinigkeiten, um mein Vorhaben mit der Library umzusetzen.
Eigentlich ist das Problem gar nicht mehr die fehlende Priorisierung, sondern die Möglichkeit, die maximale Anzahl gleichzeitig abzuarbeitender Tasks zu beschränken. Meine Idee ist, durch einen eigenen "Scheduler" die vielen Tasks zunächst in einer eigener Queue zu sammeln...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
26. Okt 2020
Ok, bisher bin ich mit eigenen Entwicklungen gut gefahren, war jedoch der Hoffnung, meine Implementierungen schrittweise durch "native" Unterstützungen zu ersetzen. Schade, dann ist die PPL immer noch nicht für meine Zwecke geeignet.
Viele Grüße,
karlkoch
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
26. Okt 2020
Ja, ich denke die Tasks dürfen erst den eigentlichen "Job" bekommen, wenn sie an der Reihe sind. Dann muss ich keine Tasks umsortieren, sondern brauch einfach nur meine interne Job-Liste anpassen.
Ein Problem sehe ich dabei noch. Wenn mehrere Bereiche einer Anwendung den gleichen ThreadPool verwenden, wie verhindere ich, dass ein Bereich mit einer Fülle an Tasks den Pool eine längere Zeit für...
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
26. Okt 2020
Hallo,
es geht nicht um Thread- oder Prozessprioritäten, sondern um die Abarbeitungsreihenfolge der Delphi PPL (die nichts mit Windows zu tun hat).
Viele Grüße,
karlkoch
-
Forum: Algorithmen, Datenstrukturen und Klassendesign
by karlkoch,
26. Okt 2020
Hallo,
ich verarbeite Vorschaubilder eines Verzeichnisses mit vielen Bildern. Für jede Datei im Verzeichnis starte ich einen Task und lasse ihn von der Delphi Parallel Programming Library verarbeiten. Soweit nichts besonders.
Während der Nutzer durch die Liste der Bilder scrollt, möchte ich gern, dass die Tasks der aktuell sichtbaren Bilder priorisiert werden. Soll heißen, gibt es mit der...