Das geht doch auch automatisch, mit einem ThreadPool (gibt es bestimmt auch für Tasks)
Einfach alle Threads/Tasks reingeben und davon X gleichzeitig arbeiten lassen.
TThreadPool.Default.MaxWorkerThreads
https://www.delphi-treff.de/tutorial...lel-library/5/