C++ (Qt)
WorkThread *thread = new WorkThread();
connect(this, SIGNAL(doWork(int)), thread, SLOT(on_doWork(int)), Qt::QueuedConnection));
connect(this, SIGNAL(setValue(int)), thread, SLOT(on_setValue(int)), Qt::QueuedConnection));
thread->start();
emit doWork(i);
emit setValue(i);
Принципиально это ничем не отличается от того что привел
Странник. Имеется ввиду что doWork будет делаться в слоте и что run просто запустит exec (как по умолчанию). Т.к. цикл событий запущен, дочерняя нитка сможет ловить сигналы в doWork
C++ (Qt)
void doWork(..)
{
while (true) {
...
QApplication::processEvents(); // если в очереди setValue, то его слот сработает
if (mValueChanged) { // данные изменились
...
}
}