Название: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: Pavlya от Декабрь 11, 2013, 14:48 Добрый день.
Нужно решить следующую задачу: по таймеру с периодом в 1 ms совершать опрос состояния линии DTR последовательного порта. Операционная система - Win Для этого я создаю отдельный тред с высоким приоритетом и запускаю в нем таймер. Все отлично работает. Период поллинга измеряю с помощью QElapsedTimer. Таймер начинает "тормозить" при захвате окна при перетаскивании (точнее при клике мышки в заголовок окна). Почему так происходит? Таймер ведь запущен в отдельном треде со своим циклом обработки событий. В архиве пример проекта. Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: gil9red от Декабрь 11, 2013, 14:56 Таймер начинает "тормозить" при захвате окна при перетаскивании (точнее при клике мышки в заголовок окна) Уже поднималась подобная тема, и сообщалось, что в винде, при перетаскивании окна, оконный менеджер приостанавливает процесс. Если ошибся, исправьте :) Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: Pavlya от Декабрь 11, 2013, 15:28 Не сделал wrapper->moveToThread(thread); (Хотя в "боевом" коде это делаю). Проблема осталась, проявляется только при других условиях. Таймер начинает тормозить при наведении мышки на активный эскиз приложения в панели задач (Заумно звучит, более понятно на скриншоте).
Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: Bepec от Декабрь 11, 2013, 15:59 У вас видимо не развязан основной поток и поток, проверяющий состояние. Скорее всего у вас синхронный вызов функции где то.
Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: Pavlya от Декабрь 11, 2013, 17:24 Да нету там никаких синхронных вызовов. Код из 20 строчек. Для эксперимента сделал то же через виндовый мультимедиа таймер. Все работает идеально. Судя по этой (http://qt-project.org/wiki/QtTimers (http://qt-project.org/wiki/QtTimers)) статье, Qt тоже использует этот таймер
Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: kuzulis от Декабрь 11, 2013, 18:11 Упрости пример.. А то какая-то залепуха получилась.. :)
Название: Re: QThread и таймер. Тормозит таймер, запущенный в отдельном потоке Отправлено: Pavlya от Декабрь 11, 2013, 18:24 Что именно упростить? И в чем залепуха?
|