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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Переменные и потоки  (Прочитано 3612 раз)
Edynchik
Гость
« : Февраль 07, 2012, 14:58 »

Доброго времени суток
Есть некоторое консольное приложение,в нем есть класс создающий поток в котором опрашивается по таймеру последовательный порт(из библиотеки kuzulis), реультаты опроса обрабатываются в другом классе создающий другой поток...результаты этой обработки необходимо передать в основную программу. Для общения между эти классами-потоками создал две глобальные переменные(static) в отдельном заголовочном: результат и флаг. И возникла проблема что флаг не срабатывает, т.к. переинцилизируется(как мне кажется)...Собственно вопрос: как исправить?
Спасибо
« Последнее редактирование: Февраль 07, 2012, 15:20 от Edynchik » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Февраль 07, 2012, 15:34 »

Вместо этого (и аналогичного):
Код
C++ (Qt)
void Thmod::run()
{
   QTimer *t1 = new QTimer(this);
   connect(t1,SIGNAL(timeout()),this,SLOT(filter()));
   usleep(500);
   t1->start(1);
   exec();
}
 

Надо делать
Код
C++ (Qt)
void Thmod::run()
{
   QTimer t1;
   connect(&t1,SIGNAL(timeout()),this,SLOT(filter()));
   usleep(500);
   t1.start(1);
   exec();
}
 

Или убирать this из конструктора таймера, но потом
не забывать удалить таймер когда необходимо.

В общем, погугли на этом форуме или глобально - тема то избитая.
Записан

ArchLinux x86_64 / Win10 64 bit
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Февраль 07, 2012, 15:41 »

Вместо этого (и аналогичного):

...

Надо делать

....

Или убирать this из конструктора таймера

Потому, что:

Цитировать
The child of a QObject must always be created in the thread where the parent was created. This implies, among other things, that you should never pass the QThread object (this) as the parent of an object created in the thread (since the QThread object itself was created in another thread).
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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