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。
#########################