【发布时间】:2016-06-02 08:35:05
【问题描述】:
考虑一个 Qt 项目。我已经定义了不同的 Qthread 来在每个类的 timerEvent 中进行计算,并在 QMainWindow 上显示结果。 (A、B、C类相同,只是printf()的内容会改变!)
这里是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();
}
请考虑我无法更改课程的布局。问题是如何在这些情况下同步我的 Qthreads?每个类的结果都没有依赖关系,但我必须确保所有结果都以相同的顺序在每秒可用。例如,结果必须始终显示为 A B C A B C A B C ...谢谢!
【问题讨论】:
-
如果要顺序处理,真的需要使用单独的线程吗?
-
“我想做点别的事情,但我不能改变我的代码”有了这种态度,你几乎可以放弃:(
-
@KubaOber 有些人会帮忙,但像你这样的人只会抱怨!我无法理解你的回答。
标签: c++ multithreading qt infinite-loop qthread