Russian Qt Forum
Ноябрь 22, 2024, 23:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Подвисает на некоторое время QTimer  (Прочитано 5896 раз)
Goshman
Гость
« : Май 15, 2009, 19:00 »

Доброе время суток!
Есть некая embedded железяка на Тионе(arm). Стоят kernel 2.6.24 и qtopia 4.3

На главном виджете есть QStackedWidget на 20 виджетов. Есть QTimer, который является главным таймером приложения и инициирует циклические опросы СОМ-порта (СОМ-порт реализован в отдельном потоке: активен только на время приема-пердачи, в паузах спит), а также обновление состояния (2 раза в секунду) активных виджетов из стэка.

Несколько раз замечал подвисание QTimer'а до нескольких десятков секунд (текущее окно не обновляется, хотя при этом на кнопки приложение реагирует и окна переключаются). Затем таймер начинал "наверстывать" упущенное и в конечном итоге далее работал норамльно. Подвисание замечал в окнах, где отображаются часы с секундами (часы инкрементируются также в главном таймере). "Наверстывание" заключается в том, что секунды начинают менться раза в 3-4 быстрее. Подвисания поймать очень сложно... за час получилось 2 раза в разных местах программы.

Как я понимаю QTimer реализован в отдельном потоке, который по каким-то причинам впадает в спячку. Можно ли неким образом назначить этому потоку высший приоритет? Или копать нужно в другом направлении?

Записан
nik135
Гость
« Ответ #1 : Май 15, 2009, 21:46 »

смотри в сторону low-latency linux how-to
Записан
gogi
Гость
« Ответ #2 : Июнь 18, 2009, 14:13 »

Тоже замечал подвисания таймера Непонимающий. Обо мне: у меня также железка на базе Тион-270, ядро 2.6.22 с патчем от Зао-Зео (в последнее время даже 2.6.22.19), Qt Embedded 4.5.1.
В углу экрана у меня рисуются часы с полем секунд и по таймеру раз в секунду показания часов обновляются. В отладочных целях иногда пищал пищалкой из этого таймера и сыпал в консоль сообщения, так и заметил глюк.  Так вот замечал, что иногда этот таймер глох на несколько секунд, а потом резко просирался и навёрстывал упущенное.  Проц даже вроде не загружен в такие моменты был, хотя уже и не помню - с глюком особо не разбирался, руки не дошли, просто отметил на будущее.
Записан
Goshman
Гость
« Ответ #3 : Июль 01, 2009, 19:16 »

С подвисаниями QTimer я, кстати, так и не разобрался. Проблема была решена написанием собственного таймера, унаследованного от QThread. Пока полет нормальный.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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