[an error occurred while processing this directive]
|
То есть, сначала грузи обычным циклом на 100%
T_Start := GetTickCount;
Counter := 0;
repeat
inc(Counter);
for Temp1 := 1 to 100000 do Temp2 := (Temp2 + 1) * 5; // курим
Delta_T := GetTickCount - T_Start;
until Delta_T > 1000;
запомни количество выполненных повторов цикла (например, пусть это будет CyclesPerSec), а потом грузи на 95% таким циклом
T_Start := GetTickCount;
Counter := 0;
repeat
inc(Counter);
for Temp1 := 1 to 100000 do Temp2 := (Temp2 + 1) * 5; // курим
Delta_T := GetTickCount - T_Start;
Reqd_Delta_T := Round(1000.0*Counter/0.95/CyclesPerSec);
if Reqd_Delta_T > Delta_T then Sleep(Reqd_Delta_T - Delta_T);
until False;