> 文档中心 > Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

Qt封装一个类管理moveToThread( )正确的开启多线程、安全的退出线程的实例

看本篇的文章基础在于你已经懂得了简单的利用moveToThread的方法创建出一个线程.
不会的话可以查看本篇博客

QT 多线程 之MoveToThread使用详解
运用:

MultMoveToThread *testObject = new MultMoveToThread(4);    testObject->createItem();    testObject->startMultThread();

.h

#ifndef MULTMOVETOTHREAD_H#define MULTMOVETOTHREAD_H#include #include #include "myobject.h"class MultMoveToThread{public:    MultMoveToThread(int iCount);    ~MultMoveToThread(); void startMultThread();privateint 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();    }}