TThreadList
Das ist keine Liste von Threads (TObjectList ist ja eine Liste von Objekten),
sondern es ist eine TList mit eingebauter Threadabsicherung. (also eigentlich eine TThreadsaveList)
Wieso Manuell aufteilen?
Lass die Einträge sich doch einfach dynamisch vereilen. (wer Zeit hat, der macht es)
* alle Aufgaben/Dateien in eine TThreadList
* dann X Threads starten (so viele, wie gewünscht)
* jeder Thread holt sich via ThreadList.Pop einwas raus
* * verarbeitet das
* * und wiederholt dann seine Schleife so oft, bis nichts mehr in der ThreadList drin ist
* dann kann er sich beenden (oder wartet, bis wieder was rein kommt, und arbeitet weiter)
Vorteile
* die ThreadList ist schon thread-sicher (hat die CriticalSection/Monitor bereits einbebaut)
* und wenn nicht alle Aufgaben gleich lange dauern, dann geht es auch schneller