QFuture的模板参数
时间: 2024-03-21 20:44:22 浏览: 87
asyncfuture:将QFuture用作Promise对象
`QFuture` 是一个 C++ 模板类,它的模板参数指定了异步任务返回值的类型。例如,如果您的异步任务返回一个整数,您可以使用 `QFuture<int>` 类型来保存任务的结果。
下面是一个简单的示例,演示了如何定义和使用一个 `QFuture` 对象:
```cpp
#include <QtCore/QCoreApplication>
#include <QtCore/QFuture>
#include <QtCore/QtConcurrent>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFuture<int> future = QtConcurrent::run([](){
// 模拟一个耗时的任务
for(int i = 0; i < 1000000000; i++){}
return 42;
});
// 等待任务完成并获取结果
int result = future.result();
qDebug() << "Task finished with result:" << result;
return a.exec();
}
```
在上面的示例中,我们使用 `QtConcurrent::run()` 方法在一个单独的线程中运行一个耗时的任务,并将结果保存到一个 `QFuture<int>` 对象中。然后,我们使用 `result()` 方法获取结果并进行处理。请注意,`result()` 方法将阻塞当前线程,直到异步任务完成并返回结果。
阅读全文