Russian Qt Forum
Ноябрь 23, 2024, 02:57
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Многопоточное программирование, процессы
>
usleep vs timeout() vs QTimerEvent
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: usleep vs timeout() vs QTimerEvent (Прочитано 4071 раз)
Белый пони
Гость
usleep vs timeout() vs QTimerEvent
«
:
Май 21, 2013, 16:32 »
Здраствуйте!
Есть задача выполнять некоторую функцию с частотой 10 раз в секунду. Попробовал три способа (два с QThread, один - без):
1) делаю в
run()
"вечный" цикл и добавляю "на глаз" задержку
usleep()
2) в
run()
пишу
exec()
; , завожу
QTimer
и выполняю нужную функцию по сигналу
timeout()
3) создаю обычный Qt-объект (
не QThread
) и выполняю функцию в событии
QTimerEvent
И получается так, что первый способ, где я подбираю нужный аргумент для usleep() работает значительно быстрее двух других.
Это нормально, или я криво реализовал два других способа?
PS компьютер - P4 3 GHz, 512 MB RAM, ОС - QNX 6.5.0
«
Последнее редактирование: Май 21, 2013, 16:34 от Белый пони
»
Записан
thechicho
Гость
Re: usleep vs timeout() vs QTimerEvent
«
Ответ #1 :
Май 21, 2013, 16:41 »
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
Записан
Белый пони
Гость
Re: usleep vs timeout() vs QTimerEvent
«
Ответ #2 :
Май 21, 2013, 18:58 »
Цитата: thechicho от Май 21, 2013, 16:41
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
Так и делал. По сравнению с первым способом подтормаживает
Записан
thechicho
Гость
Re: usleep vs timeout() vs QTimerEvent
«
Ответ #3 :
Май 21, 2013, 19:10 »
ну я хз, что у тебя за функция. если тормозит гуи и тебя это не устраивает выносишь в дополнительный поток
http://qt-project.org/doc/qt-4.8/threads.html
//2) завожу QTimer и выполняю нужную функцию по сигналу timeout()
я с потоками работаю, как и ты пытаешься сделать, отнаследовавшись от QThread. я хз лучший это способ или нет, поэтому советовать не буду.
можешь попробовать с QtConcurrent
или void QObject::moveToThread ( QThread * targetThread )
Записан
Белый пони
Гость
Re: usleep vs timeout() vs QTimerEvent
«
Ответ #4 :
Май 22, 2013, 11:32 »
Цитата: thechicho от Май 21, 2013, 19:10
ну я хз, что у тебя за функция. если тормозит гуи и тебя это не устраивает выносишь в дополнительный поток
http://qt-project.org/doc/qt-4.8/threads.html
//2) завожу QTimer и выполняю нужную функцию по сигналу timeout()
я с потоками работаю, как и ты пытаешься сделать, отнаследовавшись от QThread. я хз лучший это способ или нет, поэтому советовать не буду.
можешь попробовать с QtConcurrent
или void QObject::moveToThread ( QThread * targetThread )
Помогло использование
moveToThread
. Как в примере
http://qt-project.org/doc/qt-4.8/qthread.html
.Сделал два варианта - с QTimerEvent и с QTimer, оба работают быстро.
Остановился на QTimerEvent, т.к. в книге Бланшет и Саммерфилда рекомендуют QTimer для случая, когда много таймеров, а у меня - один.
Спасибо за помощь!
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...