Рассмотрение проекта Qt. Я определил разные Qthreads для выполнения моих вычислений в timerEvent каждого класса и покажу результаты в QMainWindow. (! Класс А, В и С являются одинаковыми и только содержание printf()
будет изменено)Синхронизация Qthreads на разных бесконечных циклах (QTimerEvent)
Здесь a.h
class A : public QObject
{
Q_OBJECT
public:
explicit A(QObject *parent = 0);
void timerEvent(QTimerEvent *);
private:
int timerId;
};
и A.cpp
является:
A::A(QObject *parent) :
QObject(parent)
{
timerId = startTimer(1000);
}
void A::timerEvent(QTimerEvent *)
{
printf("A\n");
}
main.cpp
как следует:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QThread thread_1, thread_2, thread_3;
A objA;
B objB;
C objC;
objA.moveToThread(&thread_1);
objB.moveToThread(&thread_2);
objC.moveToThread(&thread_3);
thread_1.start();
thread_2.start();
thread_3.start();
return a.exec();
}
pl легко подумайте, что я не могу изменить макет моих классов. Вопрос: Как синхронизировать мои Qthreads в этих ситуациях? Результаты каждого класса не имеют зависимостей, но я должен быть уверен, что все результаты доступны в каждую секунду и в том же порядке. Например, результаты всегда должны отображаться как A B C A B C A B C ... Спасибо!
Если вам нужна последовательная обработка, вам действительно нужно использовать отдельные потоки? – TheDarkKnight
«Я хочу сделать что-то еще, но я не могу изменить свой код». С таким отношением вы можете в значительной степени просто отказаться :( –
@KubaOber некоторые ребята помогают, но парни, как вы, просто стонут! Я не понимаю ваш ответ. – Mogi