Delphi-Quellcode:
procedure OnThreadTerminate;
begin
Dec(ActiveThreads);
// Anzahl laufender Threads anpassen
if ActiveThreads = 0
then // falls das der letzte von den 4 Threads war...
StartThreads;
// ...nächsten 4 Threads starten
end;
So schaut das aber noch stark nach Race Condition aus. Problem ist, dass das Dekrementieren von ActiveThreads nicht atomar ist. Wenn jetzt mehrere Threads "gleichzeitig" fertig werden und "gleichzeitig" das Dekrementieren ausführen, kann es passieren, dass ActiveThreads nie 0 wird...