Spec-Zone.ru › Qt 5.15

Класс QFuture

шаблон <typename T> класс QFuture

Класс QFuture представляет результат асинхронного вычисления. Подробнее...

Заголовок: #include <QFuture>
qmake: QT += core
С момента: Qt 4.4

Этот класс был представлен в Qt 4.4.

  • Список всех членов, включая наследуемые члены

Примечание: Все функции в этом классе являются потокобезопасными с следующими исключениями:

  • const_iterator

Открытые типы

класс const_iterator
typedef ConstIterator

Открытые функции

QFuture(const QFuture<T> &other)
QFuture()
QFuture<T> & operator=(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
bool operator==(const QFuture<T> &other) const

Подробное описание

Для запуска вычисления используйте один из API-интерфейсов в Qt Concurrent.

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(), не может быть отменено; но будущее, возвращаемое функцией QtConcurrent::mappedReduced(), может.

Информация о прогрессе предоставляется функциями progressValue(), progressMinimum(), progressMaximum() и progressText(). Функция waitForFinished() заставляет вызывающий поток блокироваться и ждать завершения вычисления, гарантируя, что все результаты доступны.

Состояние вычисления, представленного объектом QFuture, можно запросить с помощью функций isCanceled(), isStarted(), isFinished(), isRunning() или isPaused().

QFuture — это легкий класс со счетчиком ссылок, который можно передавать по значению.

QFuture<void> специализирован таким образом, чтобы не содержать ни одной из функций извлечения результатов. Любой QFuture<T> может быть присвоен или скопирован в QFuture<void> также. Это полезно, если требуется только информация о статусе или прогрессе — не фактические данные результатов.

Для взаимодействия с выполняемыми задачами с помощью сигналов и слотов используйте QFutureWatcher.

См. также QFutureWatcher и Qt Concurrent.

Документация по типу члена

typedef QFuture::ConstIterator

Синоним в стиле Qt для QFuture::const_iterator.

Документация по функции члена

QFuture::QFuture(const QFuture<T> &other)

Создает копию other.

См. также operator=().

QFuture::QFuture()

Создает пустое, отмененное будущее.

QFuture<T> &QFuture::operator=(const QFuture<T> &other)

Присваивает other этому будущему и возвращает ссылку на это будущее.

QFuture::~QFuture()

Удаляет будущее.

Обратите внимание, что это не ожидает и не отменяет асинхронное вычисление. Используйте waitForFinished() или QFutureSynchronizer, когда вам нужно убедиться, что вычисление завершено до уничтожения будущего.

QFuture::const_iterator QFuture::begin() const

Возвращает константный итератор STL-стиля, указывающий на первый результат в будущем.

См. также constBegin() и end().

void QFuture::cancel()

Отменяет асинхронное вычисление, представленное этим будущим. Обратите внимание, что отмена выполняется асинхронно. Используйте waitForFinished() после вызова cancel(), если вам нужна синхронная отмена.

Доступ к текущим имеющимся результатам всё ещё возможен в отменённом будущем, но новые результаты не будут доступны после вызова этой функции. Любой объект QFutureWatcher, который отслеживает это будущее, не будет отправлять сигналы о прогрессе и готовности результата в отменённом будущем.

Помните, что не все выполняемые асинхронные вычисления могут быть отменены. Например, будущее, возвращаемое функцией QtConcurrent::run(), не может быть отменено; но будущее, возвращаемое функцией QtConcurrent::mappedReduced(), может.

QFuture::const_iterator QFuture::constBegin() const

Возвращает константный итератор STL-стиля, указывающий на первый результат в будущем.

См. также begin() и constEnd().

QFuture::const_iterator QFuture::constEnd() const

Возвращает константный итератор STL-стиля, указывающий на воображаемый результат после последнего результата в будущем.

См. также constBegin() и end().

QFuture::const_iterator QFuture::end() const

Возвращает константный итератор STL-стиля, указывающий на воображаемый результат после последнего результата в будущем.

См. также begin() и constEnd().

bool QFuture::isCanceled() const

Возвращает true если асинхронное вычисление было отменено с помощью функции cancel(); в противном случае возвращает false.

Помните, что вычисление может по-прежнему выполняться, даже если эта функция возвращает true. См. cancel() для получения дополнительной информации.

bool QFuture::isFinished() const

Возвращает true если асинхронное вычисление, представленное этим будущим, завершено; в противном случае возвращает false.

bool QFuture::isPaused() const

Возвращает true если асинхронное вычисление было приостановлено с помощью функции pause(); в противном случае возвращает false.

Помните, что вычисление может по-прежнему выполняться, даже если эта функция возвращает true. См. setPaused() для получения дополнительной информации.

См. также setPaused() и togglePaused().

bool QFuture::isResultReadyAt(int index) const

Возвращает true если результат в index немедленно доступен; в противном случае возвращает false.

См. также resultAt() и resultCount().

bool QFuture::isRunning() const

Возвращает true если асинхронное вычисление, представленное этим будущим, в настоящее время выполняется; в противном случае возвращает false.

bool QFuture::isStarted() const

Возвращает true если асинхронное вычисление, представленное этим будущим, было запущено; в противном случае возвращает false.

void QFuture::pause()

Приостанавливает асинхронное вычисление, представленное этим будущим. Это метод удобства, который просто вызывает setPaused(true).

См. также resume().

int QFuture::progressMaximum() const

Возвращает максимальное значение progressValue().

См. также progressValue() и progressMinimum().

int QFuture::progressMinimum() const

Возвращает минимальное значение progressValue().

См. также progressValue() и progressMaximum().

QString QFuture::progressText() const

Возвращает (необязательное) текстовое представление прогресса, как сообщается асинхронным вычислением.

Обратите внимание, что не все вычисления предоставляют текстовое представление прогресса, и поэтому эта функция может вернуть пустую строку.

int QFuture::progressValue() const

Возвращает текущее значение прогресса, которое находится между progressMinimum() и progressMaximum().

См. также progressMinimum() и progressMaximum().

T QFuture::result() const

Возвращает первый результат в будущем. Если результат немедленно недоступен, эта функция заблокируется и будет ждать, пока результат не станет доступным. Это удобный метод для вызова resultAt(0).

См. также resultAt() и results().

T QFuture::resultAt(int index) const

Возвращает результат в index в будущем. Если результат немедленно недоступен, эта функция заблокируется и будет ждать, пока результат не станет доступным.

См. также result(), results() и resultCount().

int QFuture::resultCount() const

Возвращает количество непрерывных результатов, доступных в этом будущем. Фактическое количество сохранённых результатов может отличаться от этого значения из-за разрывов в наборе результатов. Безопасно итерировать по результатам от 0 до resultCount().

См. также result(), resultAt() и results().

QList<T> QFuture::results() const

Возвращает все результаты из будущего. Если результаты немедленно недоступны, эта функция заблокируется и будет ждать, пока они не станут доступными.

См. также result(), resultAt() и resultCount().

void QFuture::resume()

Возобновляет асинхронное вычисление, представленное этим будущим. Это метод удобства, который просто вызывает setPaused(false).

См. также pause().

void QFuture::setPaused(bool paused)

Если paused равно true, эта функция приостанавливает асинхронное вычисление, представленное будущим. Если вычисление уже приостановлено, эта функция ничего не делает. Любой объект QFutureWatcher, который отслеживает это будущее, прекратит отправку сигналов прогресса и готовности результата, пока будущее приостановлено. Отправка сигналов продолжится после возобновления будущего.

Если paused равно false, эта функция возобновляет асинхронное вычисление. Если вычисление ранее не было приостановлено, эта функция ничего не делает.

Помните, что не все вычисления могут быть приостановлены. Например, будущее, возвращаемое QtConcurrent::run(), не может быть приостановлено; но будущее, возвращаемое QtConcurrent::mappedReduced(), может.

См. также isPaused(), pause(), resume() и togglePaused().

void QFuture::togglePaused()

Переключает состояние приостановки асинхронного вычисления. Другими словами, если вычисление в настоящее время приостановлено, вызов этой функции возобновляет его; если вычисление выполняется, оно приостанавливается. Это удобный метод для вызова setPaused(!isPaused()).

См. также setPaused(), pause() и resume().

void QFuture::waitForFinished()

Ожидает завершения асинхронного вычисления (включая отменённые вычисления).

T QFuture::operator T() const

Возвращает первый результат в будущем. Если результат немедленно недоступен, эта функция заблокируется и будет ждать, пока результат не станет доступным. Это удобный метод для вызова result() или resultAt(0).

См. также result(), resultAt() и results().

bool QFuture::operator!=(const QFuture<T> &other) const

Возвращает true, если other не является копией этого будущего; в противном случае возвращает false.

bool QFuture::operator==(const QFuture<T> &other) const

Возвращает true, если other является копией этого будущего; в противном случае возвращает false.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qfuture.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API