qt如何的创建线程,主线程等待所有线程结束
2021-01-25 本文已影响0人
诸事圆成
用qt的线程池去管理你的线程。比如下面的列子,目的是开5个线程,处理自己的事情,并且主线程等待所有线程结束。
#include "mainwindow.h"
#include <QApplication>
#include <QThreadPool>
#include <QRunnable>
#include <QString>
#include <QStringList>
#include <QDebug>
/* func */
int myFunc(QString str)
{
qDebug() << QThread::currentThreadId();
qDebug() << str;
return 0;
}
/* thread interface */
class myThread : public QRunnable
{
void run() override
{
myFunc(m_text);
}
QString m_text;
public:
myThread(QString str) : m_text(str) {}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QThreadPool pool;
pool.setMaxThreadCount(5);
pool.setExpiryTimeout(-1);
QStringList list;
list << "111" << "222" << "333" << "444" << "555";
for (int i=0; i<list.size(); i++)
{
pool.start(new myThread(list[i]));
}
pool.waitForDone();
return 0;
return a.exec();
}
打印测试结果
image.png