Название: Qthread::exec() Отправлено: enamored от Январь 25, 2010, 12:46 Привет всем!
Подскажите в чем может быть проблема? Существует поток в котором в цикле выводится debug-сообщение... Windows XP Sp3, Qt 4.6 и Qt 4.6.1. Код: MainWindow.cpp Код: MainWindow::MainWindow(QWidget *parent) : Код: #ifndef MYTASK_H Код: #include "MyTask.h" Ожидаю увидеть много-много строк "qwerty", но выводится она единожды. Название: Re: Qthread::exec() Отправлено: KADABRA от Январь 25, 2010, 12:58 Подскажите в чем может быть проблема? В коде MyTask::run() - он исполняется один раз, почему должно быть "много-много строк"?Пишите тогда так Код: void MyTask::run() Название: Re: Qthread::exec() Отправлено: enamored от Январь 25, 2010, 13:07 Код: void run() Вот примеры: http://thesmithfam.org/blog/2009/09/30/lock-free-multi-threading-in-qt/ http://www.qtforum.org/post/75692/qtimer-event-won-t-process-in-thread-event-loop.html?highlight=Qthread+loop#post75692 Название: Re: Qthread::exec() Отправлено: niXman от Январь 25, 2010, 13:12 Цитировать как я понимаю. неверно понимаете.Название: Re: Qthread::exec() Отправлено: enamored от Январь 25, 2010, 13:14 Растолкуйте, пожалуйста.
Цитировать int QThread::exec () [protected] Enters the event loop and waits until exit() is called, returning the value that was passed to exit(). The value returned is 0 if exit() is called via quit(). It is necessary to call this function to start event handling. Название: Re: Qthread::exec() Отправлено: Akaiten от Январь 25, 2010, 13:36 QThread::exec() попросту запускает цикл обработки событий через QEventLoop::exec(). При вызове метода QThread::exit(int returnCode) происходит выход из цикла обработки событий и метод exec() завершает свою работу, возвращая код завершения returnCode. Метод QThread::quit() == QThread::exit(0) == QThread::exit().
Цикл обработки сообщений необходим, если поток и/или объекты, которые в нём так сказать находятся, могли посылать и получать сигналы. Название: Re: Qthread::exec() Отправлено: enamored от Январь 25, 2010, 13:41 Спасибо, Akaiten.
Название: Re: Qthread::exec() Отправлено: Amigo_sa от Январь 25, 2010, 17:28 Подскажите в чем может быть проблема? В коде MyTask::run() - он исполняется один раз, почему должно быть "много-много строк"?Пишите тогда так Код: void MyTask::run() forever смотрится красивее :) |