Russian Qt Forum

Qt => Работа с сетью => Тема начата: Pavlya от Апрель 08, 2013, 14:10



Название: QUdpSocket, приоритеты и тормоза
Отправлено: Pavlya от Апрель 08, 2013, 14:10
Здравствуйте. Пишу udp сервер и с толкнулся с такой проблемой: сервер запущен в отдельном потоке и принимает  датаграммы каждые 20 mS. Приоритет потока поднят до приоритета реального времени (QThread::TimeCriticalPriority). Чтение поступивших данных осуществляю по сигналу readyRead(). Пакеты  приходят, сервер их разгребает. Все хорошо до того момента, пока я не запускаю браузер на этой же машине. В момент старта браузера происходит задержка пакетов (delay spike), а затем они все сваливаются на сервер. Теперь о проблеме: задержка в момент запуска браузера (измеренная c  помощью WireShark) составляет около 200 mS.  Эта же задержка, измеренная с помощью QElapsedTimer в слоте сервера составляет около 800-900  mS. Грешу на network модуль от Qt (а точнее на поток), в котором происходит отслеживание состояния сокетов в ОС. В process explorer вижу свой поток, который запущен с TimeCriticalPriority приоритетом и поток обработки событий сокетов, у которого нормальный приоритет. И он, похоже, тормозит все дело. Есть ли возможность поднять его приоритет?