我想写一些必须在自己的线程中工作的类。我读过这篇文章:http://wiki.qt.io/Threads_Events_QObjects
。它建议移动必须在自己的线程中工作的对象,例如:
TestClass tst;
QThread *thread = new QThread();
tst.moveToThread(thread);
thread->start();
QObject::connect(thread, SIGNAL(started()), &tst, SLOT(start()));
在slot
TestClass 中,我放置了所有初始化程序。1. TestClass的构造函数中可以moveToThread吗?喜欢:
TestClass::TestClass() {
QThread *thread = new QThread();
this->moveToThread(thread);
thread->start();
QObject::connect(thread, SIGNAL(started()), this, SLOT(start()));
}
之后,此类的所有对象都将在自己的线程中工作。
在
TestClass
我有私人struct
可以在两个线程中更改。我应该mutex
为此使用还是使用信号/插槽:void TestClass::changeStruct(int newValue) { // invoked in main thread emit this->changeValue(newValue); } // slot void TestClass::changeStructSlot(int newValue) { // this slot will be invoked in the second thread this._struct.val = newValue; }