QThreadPool示例代码
时间: 2023-07-02 21:10:46 浏览: 42
以下是一个简单的 Qt QThreadPool 示例代码:
```cpp
#include <QCoreApplication>
#include <QDebug>
#include <QRunnable>
#include <QThreadPool>
class MyTask : public QRunnable
{
public:
void run() override {
qDebug() << "Task started in thread" << QThread::currentThreadId();
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建线程池
QThreadPool* pool = QThreadPool::globalInstance();
// 设置最大线程数
pool->setMaxThreadCount(2);
// 创建任务
MyTask task1;
MyTask task2;
MyTask task3;
// 将任务添加到线程池
pool->start(&task1);
pool->start(&task2);
pool->start(&task3);
// 等待任务完成
pool->waitForDone();
return a.exec();
}
```
这个示例代码创建了一个 `MyTask` 类,它继承自 `QRunnable`,并在 `run()` 方法中打印一条消息。然后它创建了一个全局的 `QThreadPool` 对象,并设置最大线程数为 2。最后它创建了三个 `MyTask` 对象,并将它们添加到线程池中。线程池会自动将它们分配到可用的线程中去执行,直到所有任务都完成。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)