Название: Пару вопросов по QThread. Отправлено: SimpleSunny от Сентябрь 24, 2009, 00:58 Есть класс унаследованный от QThread.
Код
1. Сигнал ready() использую для того, чтобы знать когда обьект second создан и можно было его сконфигурировать. Конфигурация производится из главного потока. 2. startSecond() вызывается из главного потока. Для того чтобы метод second->start() выполнялся в контексте вновь созданного потока использую промежуточный сигнал. (Тут на ум приходит только сделать startSecond() слотом, а в глвном потоке сделать через QTimer::singleShot(0, myThread, SLOT(startSecond()))) Можно ли заменить эти действия более красивыми методами? Название: Re: Пару вопросов по QThread. Отправлено: Vexator от Сентябрь 24, 2009, 05:04 1. а зачем сигнал ready() ? можно к примеру, в конструкторе передать настроечные параметры... ?
2. тут я несколько не уверен, но помоему достаточно заюзать Код
Название: Re: Пару вопросов по QThread. Отправлено: SimpleSunny от Сентябрь 24, 2009, 18:29 1. а зачем сигнал ready() ? можно к примеру, в конструкторе передать настроечные параметры... ? 1. Если настроечные параметры передать в конструкторе, то их, до создания обьекта, необходимо где-то будет хранить, что тоже не сильно удобно. Хотя лучше, чем у меня сейчас организовано, наверное так и сделано.2. тут я несколько не уверен, но помоему достаточно заюзать Код
2. Метод Мюнхгаузена (this->moveToThread(this)) у меня сейчас используется. Но он, насколько я понимаю, помогает только при выполнении слотов QThread связанных с сигналами из другого потока. Если же втупую вызывать функцию у QThread, то она будет выполняться в контексте вызываемого потока. Название: Re: Пару вопросов по QThread. Отправлено: Igors от Сентябрь 24, 2009, 19:16 1. Если настроечные параметры передать в конструкторе, то их, до создания обьекта, необходимо где-то будет хранить, что тоже не сильно удобно. Хотя лучше, чем у меня сейчас организовано, наверное так и сделано. Не работал конкретно с QThread, но с нитками - да. Практически всегда создается массив данных (1 элемент на каждую нитку) перед их запуском, так что это 100% стандартная/нормальная практика. Передать что-то нитке "на ходу" (т.е. когда она уже выполняется) во много раз сложнее.Название: Re: Пару вопросов по QThread. Отправлено: shadone от Сентябрь 28, 2009, 11:26 я думаю в данном случае достаточно QMetaObject::invokeMethod() (http://doc.qt.nokia.com/4.5/qmetaobject.html) с параметром Qt::QueuedConnection.
|