Следующий глобальный поток Hook занимает слишком много CPU, если я не добавлю Sleep (10), есть другое решение, чем Sleep (10 мс) - сон не выглядит оптимальным решением для производительности моего приложения. Если я добавлю слишком много сна, это не замедлит мышь.Глобальная цепочка потоков занимает слишком много CPU, как исправить?
procedure THookThread.Execute;
begin
hookhandle := SetWindowsHookEx(WH_MOUSE_LL, @LowLevelMouseHook, Hinstance, 0);
while not Terminated do
begin
MessageLoop;
// Sleep(10);
end;
UnHookWindowsHookEx(hookhandle);
hookhandle := 0;
end;
procedure THookThread.MessageLoop;
var
msg: TMsg;
begin
while PeekMessage(msg, 0, 0, 0, PM_NOREMOVE) do
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
Есть ли Обоснованием задержки 10 мс? Как правило, отказ от текущего тайм-листа выполняется с помощью 'Sleep (0)'. –
Доходность вместо сна (0) также должна работать. –
Какова цель вашей темы? И как вы положили свой крючок в Thread? –