QT 如何使用线程池
时间: 2023-12-06 19:05:29 浏览: 30
在 Qt 中使用线程池可以通过QThreadPool类来实现。下面是一个简单的示例代码:
```cpp
#include <QCoreApplication>
#include <QRunnable>
#include <QDebug>
#include <QThreadPool>
class MyTask : public QRunnable
{
public:
void run()
{
qDebug() << "Task started in thread" << QThread::currentThread();
// 执行任务的代码
}
};
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QThreadPool pool;
pool.setMaxThreadCount(4); // 设置线程池的最大线程数
for (int i = 0; i < 10; ++i) {
MyTask *task = new MyTask();
pool.start(task); // 向线程池提交任务
}
pool.waitForDone(); // 等待所有任务完成
return app.exec();
}
```
在上面的示例中,我们创建了一个名为MyTask的自定义任务类,继承自QRunnable。在该类中,我们重写了run()函数,这个函数会在线程中执行。
在main()函数中,我们创建了一个QThreadPool对象pool,并通过setMaxThreadCount()函数设置了线程池的最大线程数为4。然后,我们使用循环创建了10个任务对象,并通过pool.start()将任务提交到线程池中进行执行。
最后,我们调用pool.waitForDone()等待所有任务完成。
使用线程池可以更好地管理和控制线程的数量,提高程序的性能和响应速度。