看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程.
不会的话可以查看本篇博客
总结:QT 多线程(处理密集时的界面响应保持)
运用:
MultMoveToThread *testObject = new MultMoveToThread(4);
testObject->createItem();
testObject->startMultThread();
.h
#ifndef MULTMOVETOTHREAD_H
#define MULTMOVETOTHREAD_H
#include <QThread>
#include <QList>
#include "myobject.h"
class MultMoveToThread
{
public:
MultMoveToThread(int iCount);
~MultMoveToThread();
void startMultThread();
private:
int iThreadCount;//开启的线程个数
QList<MyObject*> myObjectList;//MyObject是我封装的一个继承QOBject的一个类
QList<QThread*> threadList;
};
#endif // MULTMOVETOTHREAD_H
.cpp
#include "multmovetothread.h"
MultMoveToThread::MultMoveToThread(int iCount)
{
iThreadCount = iCount;
}
MultMoveToThread::~MultMoveToThread()
{
for(int i = 0; i < iThreadCount; i++)
{
threadList.value(i)->quit();
threadList.value(i)->wait();
myObjectList.value(i)->deleteLater();
threadList.value(i)->deleteLater();
}
}
void MultMoveToThread::startMultThread()
{
//开始创建出函数
for(int i = 0;i < iThreadCount;i++)
{
MyObject *myObject = new MyObject();
QThread *thread = new QThread();
myObject->doAction();//这个函数里放线程主要做的事
myObjectList.append(myObject);
threadList.append(thread);
//这两步执行完之后, myObject里的实现函数就是通过线程来做的
myObject->moveToThread(thread);
threadList.value(i)->start();
}
}