쓰레드가 왜 CPU의 사용률을 전부 잡아 먹는지 궁금해서
올려 봅니다.
어케 해야 하남요.
...
StartTime := GetTickCount;
Interval := 1000;
ActiveTimer := True;
...
procedure TTimerThread.Execute;
begin
while (not Terminated) do
begin
if ActiveTimer then
if ((GetTickCount - StartTime) > Interval) then
DoOnTimeout;
end;
end;
procedure DoOnTimeout;
begin
// 희안한 짓이지만, 100% 사용률 테스트를 위해서...
// CPU 사용률을 줄이는 방법 없나여?
// Sleep 주는 거 말고
ActiveTimer := False;
StartTime := GetTickCount;
Interval := Interval * 2;
ActiveTimer := True;
end;
Execute안에 Sleep을 적절히 사용하시면 될 것 같은데 코드의 의도를 잘 모르겠네여..
하창호 wrote:
> 쓰레드가 왜 CPU의 사용률을 전부 잡아 먹는지 궁금해서
> 올려 봅니다.
> 어케 해야 하남요.
>
>
> ...
> StartTime := GetTickCount;
> Interval := 1000;
> ActiveTimer := True;
> ...
>
> procedure TTimerThread.Execute;
> begin
> while (not Terminated) do
> begin
> if ActiveTimer then
> if ((GetTickCount - StartTime) > Interval) then
> DoOnTimeout;
> end;
> end;
>
> procedure DoOnTimeout;
> begin
> // 희안한 짓이지만, 100% 사용률 테스트를 위해서...
> // CPU 사용률을 줄이는 방법 없나여?
> // Sleep 주는 거 말고
> ActiveTimer := False;
>
> StartTime := GetTickCount;
> Interval := Interval * 2;
> ActiveTimer := True;
> end;