1.先定义一个要在线程池里处理的任务
1)继承QRunnable
2)重写run();
#ifndef WORKER_H
#define WORKER_H
#include <QRunnable>
class worker : public QRunnable
{
public:
worker();
private:
void run();
};
#endif // WORKER_H
#include "worker.h"
#include <QDebug>
#include <QThread>
worker::worker()
{
setAutoDelete(true);//设置线程池执行完任务后自动删除本对象
}
void worker::run()
{
qDebug()<<"线程id"<<QThread::currentThreadId();
}
2.建一个窗口启动任务:
3.线程池操作:
#include "widget.h"
#include "ui_widget.h"
#include "worker.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
threadPool = new QThreadPool(this);
threadPool->setMaxThreadCount(5);//线程池最多5个线程
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
for(int i = 0;i < 10;++i)
{
threadPool->start(new worker);
}
}
4.结果: