Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QThread и таймер
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
Lyrri
Добрый день.

Нужно решить следующую задачу: по таймеру с периодом в 1 ms совершать опрос состояния линии DTR последовательного порта. Операционная система - Win

Для этого я создаю отдельный тред с высоким приоритетом и запускаю в нем таймер. Все отлично работает. Период поллинга измеряю с помощью QElapsedTimer. Таймер начинает "тормозить" при захвате окна при перетаскивании (точнее при клике мышки в заголовок окна). Почему так происходит? Таймер ведь запущен в отдельном треде со своим циклом обработки событий. В архиве пример проекта.
mezmay
Объект wrapper живет в основном потоке

можно сделать так:

...
thread = new QThread;
wrapper = new TWrapper;
wrapper->moveToThread(thread);
...
Lyrri
Спасибо. Не сделал wrapper->moveToThread(thread); (Хотя в "боевом" коде это делаю). Проблема осталась, проявляется только при других условиях. Таймер начинает тормозить при наведении мышки на активный эскиз приложения в панели задач (Заумно звучит, более понятно на скриншоте).
mezmay
ну а так думаю винда просто не выдерживает интервал 1мс, ведь таймер по событию.
Я бы унаследовался от QThread, переопределил run(), и в нем крутил бы цикл с usleep()' ами.
Lyrri
Должна выдерживать. Судя по этому описанию. Если использовать виндовый мультимедиа таймер, то ничего не тормозит
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2018 IPS, Inc.