Delphi-Quellcode:
//High Condition
procedure TSendThread.HighCondition;
begin
FetchedCount:=FetchedCount+1;
end;
//Reset Condition
procedure TSendThread.ResetCondition;
begin
FetchedCount:=0;
end;
procedure TSendThread.Execute;
begin
while not Terminated do
begin
Synchronize(HighCondition);
if FetchedCount>ConditionLimit then
begin
Sleep(Delay);
Synchronize(ResetCondition);
end;
....
MEINE_ANDEREN_PROCEDUREN
....
end;
end;
FetchedCount und ConditionLimit sind globale Variablen. FetchedCount wird nur im Synchronize beschrieben, ConditionLimit wird nur gelesen!
Grundlage: Ich habe immer 100 Threads. Wenn ich das Limit auf 50 setze dann sollen 50 Threads
MEINE_ANDEREN_PROCEDUREN ausführen und 50 sollen erstmal schlafen und dann
MEINE_ANDEREN_PROCEDUREN ausführen !