При увеличении нагрузки на графику и расчеты,
постепенно сильно выросли задержки получения сообщений о приходе UDP-пакетов.
Иногда и по полминуты приходится ждать отклика на отправленный с другого компа пакет.
Причем пакеты не теряются, а где-то скапливаются и потом все-равно доходят.
Главный цикл выглядит примерно так (на делфе):
while msg.message <> WM_QUIT do if PeekMessage(msg, 0, 0, 0, PM_REMOVE ) then begin TranslateMessage( msg ); DispatchMessage( msg ); end else begin Controller.AllUpdate; // Если в очереди нет сообщений - формируем кадр end;
Т.е. сообщения в самой очереди почему-то появляются с огромной задержкой.
Причем эти сетевые глюки мало зависят от производительности компа.
(тормоза проявляются и при большом FPS)
В чем может быть причина?
DoS?
bee buster
Самые большие тормоза проявились на 7-ке
Дополнение:
Сделал перерисовку кадра по таймеру (а не по OnIdle - как показано выше).
Если FPS не падает ниже частоты срабатывания таймера,
то и сетевые пакеты приходят без задержек.
Почему же такая схема как в первом посте вызывает затык сообщений?
>if PeekMessage
попробуй while PeekMessage
Тема в архиве.