近期学习Qt多线程编程,学到几种多线程使用方法,下面几种方法仅供个人总结,以后方便参考。
1.moveToThread的用法。
首先要定义一个新类Class A,并且此类必须继承自QObject
class A : public QObject
{
Q_OBJECT
public slots:
void fun()
{
qDebug()<<"test"<<QThread::currentThreadId();
}
};
然后在main.cpp启动线程。
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
A test;
QThread * thread = new QThread;
test.moveToThread(thread);
thread->start();
QObject::connect(thread,SIGNAL(started()),&test,SLOT(fun()));
return a.exec();
}
此方法从
QObject 派生一个类并实现必要的槽和信号,将对象移到一个具有事件循环的线程中,并通过queued信号/槽连接与对象进行通信。
2.使用线程池