Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
15-1476990536
Belkin
2016-10-20 22:08
2019.03.17
Простая защита приложения


15-1477776601
Юрий
2016-10-30 00:30
2019.03.17
С днем рождения ! 30 октября 2016 воскресенье


1-1360749669
OtherSide
2013-02-13 14:01
2019.03.17
Memory mapped file для IPC


2-1479215948
Алексис
2016-11-15 16:19
2019.03.17
Обработка очереди сообщений жрет 25% процессора


2-1479040463
Artem78
2016-11-13 15:34
2019.03.17
Скачивание без сохранения в Synapse