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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ожидание окончания запуска потока  (Прочитано 5382 раз)
Paul
Гость
« : Август 17, 2011, 15:41 »

Добрый день, коллеги. Есть вопрос по потокам: для работы клиента создал объект, к-ый использует 3 дочерних потока (приёмник, обработчик и передатчик), которые создаются и стартуют в конструкторе объекта. Чтобы рабочие данные принадлежали самим потокам, их создание и cоnnect-ы определены в run(). Если в главной прог-е создание и выполнение
1-ой операции выполнить без задержки, то "дочки-поточки" не успевают "разогнаться" полностью, т.к. start() только запускает run() и не ждёт его выполнения, что понятно (если exec(), то не дождёшься).
НУЖНА ПАУЗА !!!

Я по своей малости знания QT решил задачку так: разделил создание и выполнение 1-ой операции на две функции, в конце 1-ой (после создания объекта в окне) выполнил
QTimer::singleShot(500, this, SLOT(executOper()));
где, как легко догадаться executOper() - выполнение операции.

С моей колокольни - как-то коряво. Так и хочется после start() написать wait(), но для какого потока Непонимающий У меня не получилось. Поделитесь пожалуйста знаниями.

   С уважением, Paul
Записан
Странник
Гость
« Ответ #1 : Август 17, 2011, 15:52 »

совершенно не понял смысла вашего сообщения. если вам нужно узнать, когда реально запустился поток - сигнал QThread::started() вам в помощь, по завершении работы потока высылается сигнал QThread::finished().
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #2 : Август 17, 2011, 15:57 »

Да, уточните чего именно вы хотите дождаться. Лучше с примером своего кода.
Записан
Paul
Гость
« Ответ #3 : Август 18, 2011, 14:52 »

Добрый день, коллеги. Извините, но вчера, в конторе накрылось электричество и по-этому
возникла пауза. Мне надо дождаться момента запуска потока (начало работы exec Непонимающий).
Предполагал такой код:

   Tmy_Thread *my_Thread=new Tmy_Thread();
   my_Thread->start();
   while(!my_Thread->isRunning())
   {
      какой-то wait !!!
      какой Непонимающий

   }

   С уважением, Paul
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #4 : Август 18, 2011, 16:32 »

Код
C++ (Qt)
  while( !( my_Thread->isRunning() || my_Thread->isFinished() ) )
  {
        QThread::yieldCurrentThread();
  }
Записан
Paul
Гость
« Ответ #5 : Август 29, 2011, 20:07 »

Спасибо, LisandreL, и удачи Вам.

С уважением, Paul
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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