Qt 之 Concurrent 3、【类】QFuture类

QFuture Class

template <typename T> class QFuture QFuture 类是模板类

Header:#include < QFuture >
qmake:QT += core
Since:Qt 4.4

QFuture 类表示异步计算的结果。

详述

要开始计算,请使用 Qt Concurrent 框架中的 API 之一。

​ QFuture 允许线程与一个或多个结果同步,这些结果将在稍后的时间点准备好。 结果可以是具有默认构造函数和复制构造函数的任何类型。 如果在调用 result()、resultAt() 或 results() 函数时结果不可用,QFuture 将等待直到结果可用。 您可以使用 isResultReadyAt() 函数来确定结果是否准备就绪。 对于报告多个结果的 QFuture 对象,resultCount() 函数返回连续结果的数量。 这意味着从 0 到 resultCount() 迭代结果总是安全的。

​ QFuture 提供了一个 Java 风格的迭代器(QFutureIterator)和一个 STL 风格的迭代器(QFuture::const_iterator)。 使用这些迭代器是QFuture 访问结果的另一种方式。

​ QFuture 还提供了与正在运行的计算进行交互的方法。 例如,可以使用 cancel() 函数取消计算。 要暂停计算,请使用 setPaused() 函数或 pause()、resume() 或 togglePaused() 便利函数之一。 请注意,并非所有正在运行的异步计算都可以取消或暂停。 比如QtConcurrent::run()返回的future不能取消; 但是 QtConcurrent::mappedReduced() 返回的QFuture 可以。

​ 进度信息由progressValue()、progressMinimum()、progressMaximum() 和progressText() 函数提供。 waitForFinished() 函数导致调用线程阻塞并等待计算完成,确保所有结果都可用。

​ 可以使用 isCanceled()、isStarted()、isFinished()、isRunning() 或 isPaused() 函数查询 QFuture 表示的计算状态。

​ QFuture 是一个轻量级的引用计数类,可以按值传递。

​ QFuture< void > 专门用于不包含任何结果获取函数。 任何 QFuture< T > 也可以分配或复制到 QFuture< void > 中。 如果只需要状态或进度信息 - 而不是实际结果数据,这很有用。

​ 要使用信号和槽与正在运行的任务进行交互,请使用 QFutureWatcher

公共类型

  1. class const_iterator
    STL-style const iterator
  2. typedef ConstIterator
    Qt-style synonym for QFuture::const_iterator

两种迭代器,分别是 Java 风格的迭代器 和 STL 风格的迭代器

成员函数

公共函数

函数简介
构造和析构
QFuture(const QFuture< T > &other)构造
QFuture()构造
QFuture< T > & operator=(const QFuture< T > &other)复制
~QFuture()析构
迭代器
QFuture::const_iterator begin() const迭代器
QFuture::const_iterator end() const迭代器
QFuture::const_iterator constBegin() const常量迭代器
QFuture::const_iterator constEnd() const常量迭代器
计算交互
void cancel()取消
void pause()暂停
void setPaused(bool paused)设置暂停
void togglePaused()切换暂停,setPaused(!isPaused())
void resume()回复
void waitForFinished()等待结束,阻塞
计算状态
bool isCanceled() const
bool isFinished() const
bool isPaused() const
bool isResultReadyAt(int index) const
bool isRunning() const
bool isStarted() const
进度信息
int progressMaximum() const最大进度值
int progressMinimum() const最小进度值
QString progressText() const返回进度报告,可为空字符串
int progressValue() const当前进度值
结果查询
T result() constresultAt(0),阻塞型
T resultAt(int index) const会阻塞
resultCount() const结果数量
QList< T > results() const结果集合,阻塞型
运算符重载
T operator T() constresult() or resultAt(0),阻塞型
bool operator!=(const QFuture< T > &other) const比较不相等
bool operator==(const QFuture< T > &other) const比较相等
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值