Russian Qt Forum
Июнь 15, 2024, 19:58 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Потоки и задержки  (Прочитано 3016 раз)
^Kenny^
Гость
« : Март 11, 2012, 20:02 »

Тема на стыке 2-х разделов, сети и многопоточность. Больше пеняю на многопоточность, поэтому сюда.


Имеется сервер, который обрабатывает UDP-пакеты. Цель -- сделать так, чтобы обрабатывалось 100 пакетов в секунду. Сейчас сотня проходит ~ за 2.

Все этапы обработки пишутся в лог-файл вместе с текущим временем (библиотека log4cplus). При этом, по ходу обработки между очередными этапами иногда выскакивает пауза, причем всегда фиксированное время - 15\16 мсек.
В итоге, на один пакет приходится 0, 15\16 или 31\32 мсек. Т.е. некоторые обрабатываются мгновенно, некоторые -- долго.

Для передачи пакета используется emit сигналов (т.к. передать нужно в соседний поток). Может ли это быть узким местом? Где-то тут в теме писали, что в соседний поток 80.000 раз в секунду у них проходили вызовы через сигналы из другого потока.

При этом, доходит даже до того, что между двух команд вывода в лог лежит строк 20 кода, весь -- работа со стандартными типами данных в QT + мат. операции (без циклов) а пауза между ними -- 16мсек.
С чем такое может быть связано??
Записан
Bepec
Гость
« Ответ #1 : Март 12, 2012, 06:52 »

С таймерами, с вызовом ф-ций в других потоках, с обновлением экрана, с частотой записи в файл.

У меня лично была проблема с созданием таймеров в основном потоке (сглупил Подмигивающий ). И потом постоянно на 3-7 пакет паузы были в 15-16 мс.

Так же говорит один уважаемый мною человек, что система может приостановить работу программы как раз на эти самые 15-16 мс.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.234 секунд. Запросов: 20.