Текущий архив: 2019.03.17;
Скачать: CL | DM;
Вниз
Обработка очереди сообщений жрет 25% процессора Найти похожие ветки
← →
Алексис (2016-11-15 16:19) [0]Почему? (D2006, W7)
DoBeginQueueProc();
try
while True do
begin
while not PeekMessage(Msg, m_Handle, 0, 0, PM_NOREMOVE) do
begin
if Terminated then begin
DoBeforeEndQueueProc();
PostQuitMessage(0);
end;
// SwitchToThread;
Sleep(0);
end;
if not GetMessage(Msg, m_Handle, 0, 0) then
Break;
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
finally
DoAfterEndQueueProc();
end;
А со Sleep(1) не жрет.
← →
iop © (2016-11-15 16:25) [1]потому что одно из четырех ядер крутится как белка в колесе ни на что больше не отвлекаясь
← →
Алексис (2016-11-15 16:33) [2]а SwitchToThread; или Sleep(0); разве не говорят ему отвлечься? Раньше, вроде, такое прокатывало.
← →
iop © (2016-11-15 16:40) [3]во первых свичтусред это функция возвращающая значение
во вторых она закоменчена
в третьих
Causes the calling thread to yield execution to another thread that is ready to run on the current processor. (см. во первых)
← →
Игорь Шевченко © (2016-11-15 17:27) [4]Это не обработка очереди сообщений, это непрерывный опрос очереди сообщений.
Страницы: 1 вся ветка
Текущий архив: 2019.03.17;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.004 c