QFuture

QFuture 

#include <QFuture>

 

Public Functions

  QFuture()
  QFuture(const QFuture<T> &other)
  ~QFuture()
QFuture::const_iterator begin() const
void cancel()
QFuture::const_iterator constBegin() const
QFuture::const_iterator constEnd() const
QFuture::const_iterator end() const
bool isCanceled() const
bool isFinished() const
bool isPaused() const
bool isResultReadyAt(int index) const
bool isRunning() const
bool isStarted() const
void pause()
int progressMaximum() const
int progressMinimum() const
QString progressText() const
int progressValue() const
T result() const
T resultAt(int index) const
int resultCount() const
QList<T> results() const
void resume()
void setPaused(bool paused)
void togglePaused()
void waitForFinished()
T operator T() const
bool operator!=(const QFuture<T> &other) const
QFuture<T> & operator=(const QFuture<T> &other)
bool operator==(const QFuture<T> &other) const

 

 

 

详细说明

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

 

要开始计算,请使用Qt并发框架中的一个API。

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

#########################

posted @ 2023-07-15 21:30  西北逍遥  阅读(170)  评论(0编辑  收藏  举报