目录
4.2 bool QFuture::isCanceled() const
4.3 bool QFuture::isFinished() const
4.4 bool QFuture::isPaused() const
4.5 bool QFuture::isResultReadyAt(int index) const
4.6 bool QFuture::isRunning() const
4.7 bool QFuture::isStarted() const
4.8 void QFuture::setPaused(bool paused)
4.10 int QFuture::progressMaximum() const
4.11 int QFuture::progressMinimum() const
4.12 QString QFuture::progressText() const
4.13 int QFuture::progressValue() const
4.14 T QFuture::result() const
4.15 T QFuture::resultAt(int index) const
4.16 int QFuture::resultCount() const
4.17 QList QFuture::results() const
4.19 void QFuture: togglePaused ()
4.20 void QFuture::waitForFinished()
1、Header: #include <QFuture>
2、qmake: QT += core
3、详情描述
QFuture类表示异步计算的结果。
要开始计算,可以使用Qt Concurrent框架中的一个api。
QFuture允许线程针对一个或多个结果进行同步,这些结果将在稍后的时间点准备就绪。结果可以是具有默认构造函数和复制构造函数的任何类型。如果一个结果在调用result()、resultAt()或results()函数时不可用,QFuture将等待直到结果可用。您可以使用isResultReadyAt()函数来确定结果是否准备就绪。对于报告多个结果的QFuture对象,resultCount()函数返回连续结果的数量。这意味着迭代从0到resultCount()的结果总是安全的。
QFuture提供了一个java风格的迭代器(QFutureIterator)和一个stl风格的迭代器(QFuture::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.。
4、Number functions
4.1 void QFuture::cancel()
取消所代表的异步计算。注意,取消是异步的。当需要同步取消时,在调用cancel()之后使用waitForFinished()。
当前可用的结果仍然可以在取消后访问,但调用此函数后,新的结果将不可用。任何监视这个未来的QFutureWatcher对象都不会为取消的未来提供进度和结果准备信号。
请注意,不是所有的异步计算都可以取消。例如,QtConcurrent::run()返回的future不能被取消;但是QtConcurrent::mappedReduced()返回的future可以。
4.2 bool QFuture::isCanceled() const
如果异步计算已经被cancel()函数取消,则返回true;否则返回false。
请注意,即使这个函数返回true,计算可能仍然在运行。有关更多细节,请参见cancel()。
4.3 bool QFuture::isFinished() const
如果由该future表示的异步计算已经完成,则返回true;否则返回false。
4.4 bool QFuture::isPaused() const
如果异步计算已通过pause()函数暂停,则返回true;否则返回false。
请注意,即使这个函数返回true,计算可能仍然在运行。有关更多细节,请参见setPaused()。
4.5 bool QFuture::isResultReadyAt(int index) const
如果索引处的结果立即可用,则返回true;否则返回false。
4.6 bool QFuture::isRunning() const
如果由该future表示的异步计算当前正在运行,则返回true;否则返回false。
4.7 bool QFuture::isStarted() const
如果由该future表示的异步计算已经启动,则返回true;否则返回false。
4.8 void QFuture::setPaused(bool paused)
如果paused为true,该函数将暂停由future表示的异步计算。如果计算已经暂停,则此函数不执行任何操作。当未来暂停时,任何监视此未来的QFutureWatcher对象将停止交付进度和结果准备信号。一旦未来恢复,信号传递将继续进行。
如果pause为false,该函数将继续异步计算。如果之前没有暂停计算,则此函数不执行任何操作。
请注意,不是所有的计算都可以暂停。例如,QtConcurrent::run()返回的future不能暂停;但是QtConcurrent::mappedReduced()返回的future可以。
4.9 void QFuture::pause()
暂停由这个未来表示的异步计算。这是一个简单调用setPaused(true)的方便方法。
4.10 int QFuture::progressMaximum() const
返回最大的progressValue()。
4.11 int QFuture::progressMinimum() const
返回最小的progressValue()。
4.12 QString QFuture::progressText() const
返回由异步计算报告的进度的(可选)文本表示形式。
请注意,并非所有的计算都提供了进程的文本表示,因此,该函数可能返回一个空字符串。
4.13 int QFuture::progressValue() const
返回当前进度值,它介于progressMinimum()和progressMaximum()之间。
4.14 T QFuture::result() const
返回的第一个结果。如果结果不能立即可用,该函数将阻塞并等待结果可用。这是调用resultAt(0)的一个方便方法。
4.15 T QFuture::resultAt(int index) const
在以后的索引处返回结果。如果结果不能立即可用,该函数将阻塞并等待结果可用。
4.16 int QFuture::resultCount() const
返回在此可用的连续结果数。由于结果集中存在空白,实际存储的结果数可能与此值不同。迭代从0到resultCount()的结果总是安全的。
4.17 QList<T> QFuture::results() const
返回所有结果。如果结果不是立即可用的,这个函数将阻塞并等待它们可用。
4.18 void QFuture::resume()
恢复这个未来所表示的异步计算。这是一个简单调用setPaused(false)的方便方法。
4.19 void QFuture: togglePaused ()
切换异步计算的暂停状态。换句话说,如果计算当前暂停,调用这个函数将恢复它;如果计算正在运行,则会暂停。这是一个用于调用setPaused(!isPaused())的方便方法。
4.20 void QFuture::waitForFinished()
等待异步计算完成(包括cancel()ed计算)。