用QtConcurrent实现多线程的具体实现例子
时间: 2023-05-30 12:06:54 浏览: 139
多线程concurrent的用例
以下是一个使用QtConcurrent实现多线程的例子:
```cpp
#include <QtConcurrent/QtConcurrent>
#include <QDebug>
void worker(int id)
{
qDebug() << "Worker" << id << "started";
for (int i = 0; i < 100000000; i++) {
// do some work
}
qDebug() << "Worker" << id << "finished";
}
int main(int argc, char *argv[])
{
Q_UNUSED(argc);
Q_UNUSED(argv);
// run two workers in parallel
QFuture<void> future1 = QtConcurrent::run(worker, 1);
QFuture<void> future2 = QtConcurrent::run(worker, 2);
// wait for the workers to finish
future1.waitForFinished();
future2.waitForFinished();
qDebug() << "All workers finished";
return 0;
}
```
这个例子中,我们定义了一个`worker`函数,这个函数会在新线程中运行,它接受一个整数参数`id`,表示这个worker的编号。在主函数中,我们使用`QtConcurrent::run`函数启动两个worker,并在主线程中等待它们完成。`QtConcurrent::run`函数会返回一个`QFuture`对象,我们可以使用`waitForFinished`函数等待这个`QFuture`对象表示的任务完成。
在实际使用中,我们可以根据需要创建多个worker并使用`QtConcurrent::run`函数启动它们,然后使用`QFuture`等待它们完成。`QtConcurrent`还提供了许多其他的函数,例如`map`、`filter`、`reduce`等,可以方便地进行并行计算。
阅读全文