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.
Nö wieso das den?
Klar sollte man je nach Aufgabe wählen...
Ich habe "alle" Arten in meiner Software...
- Herkömmliche Thread's für schnelle Reaktionen... Die werden am Anfang des Programmstarts erzeugt und warten nur noch auf ein Event... Daher startet die Verarbeitung in wenigen Nano-Sekunden (Kein Overhead)
- TTask.Run... für das "schnelle mal zwischendurch" zum Beispiel "Save Button"... Der Datenbankzugriff kommt in die anonyme procedure - hier ist der Overhead egal. Ob die Datenbank einige ms später geschrieben wird oder nicht ist egal...
- TParallel... den Overhead für den Thread-Pool gönne ich mir nur dann, wenn ich NIX Synchronisieren muss und die einzelne Verarbeitung länger dauert. Außerdem habe ich die automatische Anpassung an die Kerne... Muss mir also nicht überlegen, wie viele Worker Threads ich erzeugen darf...
- (Idleworker) ist zwar kein Thread aber von System her gehört er für mich hier in die Liste... Nach dem Motto UI-Thread Queue - wenn Du Zeit dafür hast.
Und schon wird die Thread Anwendung zum Kindergeburtstag...
Mavarik