crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> [РЕШЕНО] Работа таймеров в параллельном потоке
AD
  опции профиля:
сообщение 30.11.2009, 12:48
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 2003
Регистрация: 4.2.2008
Из: S-Petersburg
Пользователь №: 84

Спасибо сказали: 70 раз(а)




Репутация:   17  


По каким-то причинам не работает таймер, который я хочу запустить в параллельном потоке.
В чем могут быть проблемы?
/// Класс потока - вращение вокруг осей заданное количество времени - длительное вращение
class ContinueRotation: public QThread
{
    Q_OBJECT

private:
     QTimer _timerReading;            ///< таймер для запуска чтения из COM-порта

public:
     void startTimerReading() { _timerReading.start(1000); }
};


/// Запуск потока вращения в обеих плоскостях длительный промежуток времени
void ContinueRotation::run()
{
    connect(&_timerReading,  SIGNAL(timeout()), this, SLOT(reading()));
    ///
}

/// Запуск работы прожектора - ГЛАВНЫЙ поток
void ContinuousWork::startControl()
{
///
  _continue -> startTimerReading();
    _continue -> start();
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 30.11.2009, 18:02
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(AD @ 30.11.2009, 20:27) *
А я правильно понимаю, что это таймер заканчивает свое действие, как только программа выходит из функции run()?
объект таймера будет разрушен по выходу, следовательно от таймера ничего не останется. Только вот метод run() никогда не закончится, а зациклится в методе exec(), также как и функция main()
int main (.....)
{
    QAplication a(...);
...
    a.exec();
}
методы exec() в потоке и в приложении делают примерно одно и тоже
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- AD   [РЕШЕНО] Работа таймеров в параллельном потоке   30.11.2009, 12:48
- - BRE   1. Обрати внимание, таймер создается в главном пот...   30.11.2009, 12:51
|- - AD   Цитата(BRE @ 30.11.2009, 12:51) 1. Обрати...   30.11.2009, 15:31
- - Litkevich Yuriy   AD, таймер так и остался в главном потоке. Помести...   30.11.2009, 15:45
|- - AD   Цитата(Litkevich Yuriy @ 30.11.2009, 15:4...   30.11.2009, 15:49
|- - BRE   Цитата(AD @ 30.11.2009, 15:49) Почему в г...   30.11.2009, 16:11
- - Litkevich Yuriy   BRE, понял, ведь это следует из задачи   30.11.2009, 16:25
|- - AD   Мда... Руки у меня, что-ли, кривые.... Не выходит....   30.11.2009, 17:02
|- - BRE   Проверка и испускание сигнала от таймера происходи...   30.11.2009, 17:24
||- - AD   Цитата(BRE @ 30.11.2009, 17:24) Проверка ...   30.11.2009, 17:27
||- - BRE   Цитата(AD @ 30.11.2009, 17:27) А я правил...   30.11.2009, 17:29
||- - AD   Блин. Я убрал строку остановки таймера, но в слот ...   30.11.2009, 17:38
|- - BRE   Попробуй такой код: void ContinueRotation:...   30.11.2009, 17:46
|- - AD   Не попадает.... Так.... попало. Интересно, а тако...   30.11.2009, 18:01
|- - BRE   Цитата(AD @ 30.11.2009, 17:57) Не попадае...   30.11.2009, 18:05
|- - AD   Ну... я уже ведь сказал, что запускается.... Пробл...   30.11.2009, 18:07
|- - BRE   Цитата(AD @ 30.11.2009, 18:07) Ну... я уж...   30.11.2009, 18:09
|- - AD   Мда... Грустно, что нельзя это сделать. Задачка в ...   30.11.2009, 18:18
|- - BRE   Что делает этот код? for(int timer_count=0; QT...   30.11.2009, 18:29
- - Litkevich Yuriy   Цитата(AD @ 30.11.2009, 20:27) А я правил...   30.11.2009, 18:02
- - BRE   Или делать такой изврат: void ContinueRotation...   30.11.2009, 18:19
- - Litkevich Yuriy   AD, ты уже в который раз спускаешся до подробносте...   30.11.2009, 18:23
|- - AD   Цитата(Litkevich Yuriy @ 30.11.2009, 18:2...   30.11.2009, 18:24
- - Litkevich Yuriy   Цитата(AD @ 30.11.2009, 21:24) Идея, а не...   30.11.2009, 18:29
- - AD   Цитата(Litkevich Yuriy @ 30.11.2009, 18:2...   30.11.2009, 18:38
- - BRE   Цитата(AD @ 30.11.2009, 18:38) Надо как-т...   30.11.2009, 18:43


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 16.1.2025, 2:44