Доброго вечера. Наткнулся тут на статьи «вы делаете это не правильно». Интересно. Только осталось пара не понятных моментов.
В общем:
1. Если я хочу чтобы один класс выполнялся в своем потоке могу ли я его переносить туда в контструкторе? Что-то на подобии этого:
SuperClass::SuperClass() {
QThread *thread = new QThread();
this->moveToThread(thread);
thread->start();
QObject::connect(thread, SIGNAL(started()), this, SLOT(start()));
}
2. Есть у меня в классе структура, переменная etc которую могут менять в разных потоках. Можно ли в таком случае использовать слоты/сигналы без мютекса? Как-то так:
void SuperClass::changeStruct(int newValue) {
// вызываем сигнал класса SuperClass
emit changeValue(newValue);
}
void SuperClass::changeStructSlot(int newValue) {
// Слот класса SuperClass который будет обрабатываться в своем потоке
this._struct.val = newValue;
}
Оправданны ли такие решения?
c++, multithreading, qt, signal, slot