Spec-Zone.ru › Qt 5.11

Пространство имён QtConcurrent

Пространство имён QtConcurrent предоставляет высокоуровневые API, которые позволяют писать многопоточные программы без использования низкоуровневых примитивов потоков. Подробнее...

Заголовок: #include <QtConcurrent>
qmake: QT += concurrent
С версии: Qt 4.4
  • Устаревшие члены

Классы

class IntermediateResults

Типы

enum ReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce }
flags ReduceOptions

Функции

void blockingFilter(Sequence &sequence, KeepFunctor filterFunction)
Sequence blockingFiltered(const Sequence &sequence, KeepFunctor filterFunction)
OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor filterFunction)
ResultType blockingFilteredReduced(const Sequence &sequence, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
ResultType blockingFilteredReduced(Iterator begin, Iterator end, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
void blockingMap(Sequence &sequence, MapFunctor function)
void blockingMap(Iterator begin, Iterator end, MapFunctor function)
OutputSequence blockingMapped(const InputSequence &sequence, MapFunctor function)
Sequence blockingMapped(Iterator begin, Iterator end, MapFunctor function)
ResultType blockingMappedReduced(const Sequence &sequence, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
ResultType blockingMappedReduced(Iterator begin, Iterator end, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))
QFuture<void> filter(Sequence &sequence, KeepFunctor filterFunction)
QFuture<typename Sequence::value_type> filtered(const Sequence &sequence, KeepFunctor filterFunction)
QFuture<typename qValueType<Iterator>::value_type> filtered(Iterator begin, Iterator end, KeepFunctor filterFunction)
QFuture<ResultType> filteredReduced(const Sequence &sequence, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
QFuture<ResultType> filteredReduced(Iterator begin, Iterator end, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
QFuture<void> map(Sequence &sequence, MapFunctor function)
QFuture<void> map(Iterator begin, Iterator end, MapFunctor function)
QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(const Sequence &sequence, MapFunctor function)
QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(Iterator begin, Iterator end, MapFunctor function)
QFuture<ResultType> mappedReduced(const Sequence &sequence, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
QFuture<ResultType> mappedReduced(Iterator begin, Iterator end, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
QFuture<T> run(Function function, ...)
QFuture<T> run(QThreadPool *pool, Function function, ...)

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

Пространство имён QtConcurrent предоставляет высокоуровневые API, которые позволяют писать многопоточные программы без использования низкоуровневых примитивов потоков.

См. документацию по модулю Qt Concurrent для обзора доступных функций, или см. ниже для подробной информации о каждой функции.

Классы

class IntermediateResults

Описание типа

enum QtConcurrent::ReduceOptionflags QtConcurrent::ReduceOptions

Этот перечисление задаёт порядок, в котором результаты функции map или filter передаются в функцию reduce.

Константа Значение Описание
QtConcurrent::UnorderedReduce 0x1 Сведение выполняется в произвольном порядке.
QtConcurrent::OrderedReduce 0x2 Сведение выполняется в порядке исходной последовательности.
QtConcurrent::SequentialReduce 0x4 Сведение выполняется последовательно: только один поток будет входить в функцию reduce за раз. (Параллельное сведение может быть поддержано в будущей версии Qt Concurrent.)

Тип ReduceOptions является typedef для QFlags<ReduceOption>. Он хранит комбинацию значений ReduceOption, объединённых оператором ИЛИ.

Описание функции

void QtConcurrent::blockingFilter(Sequence &sequence, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае, элемент удаляется из sequence.

Примечание: Эта функция будет блокироваться до тех пор, пока все элементы в последовательности не будут обработаны.

См. также Конкурентная фильтрация и фильтрация-сведение.

Sequence QtConcurrent::blockingFiltered(const Sequence &sequence, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую Последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую Последовательность. В противном случае, элемент не появится в новой Последовательности.

Примечание: Эта функция будет заблокирована до обработки всех элементов в последовательности.

См. также filtered() и Конкурентный фильтр и фильтр-сведение.

OutputSequence QtConcurrent::blockingFiltered(Iterator begin, Iterator end, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента от begin до end и возвращает новую Последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую Последовательность. В противном случае, элемент не появится в новой Последовательности.

Примечание: Эта функция будет заблокирована до достижения итератором конца обрабатываемой последовательности.

См. также filtered() и Конкурентный фильтр и фильтр-сведение.

ResultType QtConcurrent::blockingFilteredReduced(const Sequence &sequence, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true.

Обратите внимание, что, хотя filterFunction вызывается конкуретно, только одна нить одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions — QtConcurrent::UnorderedReduce. Если reduceOptions — QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.

Примечание: Эта функция будет заблокирована до обработки всех элементов в последовательности.

См. также filteredReduced() и Конкурентный фильтр и фильтр-сведение.

ResultType QtConcurrent::blockingFilteredReduced(Iterator begin, Iterator end, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает filterFunction один раз для каждого элемента от begin до end. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true.

Обратите внимание, что, хотя filterFunction вызывается конкуретно, только одна нить одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions — QtConcurrent::UnorderedReduce. Если reduceOptions — QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.

Примечание: Эта функция будет заблокирована до достижения итератором конца обрабатываемой последовательности.

См. также filteredReduced() и Конкурентный фильтр и фильтр-сведение.

void QtConcurrent::blockingMap(Sequence &sequence, MapFunctor function)

Вызывает function один раз для каждого элемента в sequence. function получает ссылку на элемент, поэтому любые изменения, внесённые в элемент, будут отображаться в sequence.

Примечание: Эта функция будет заблокирована до обработки всех элементов в последовательности.

См. также map() и Конкурентное отображение и отображение-сведение.

void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunctor function)

Вызывает function один раз для каждого элемента от begin до end. function получает ссылку на элемент, поэтому любые изменения, внесённые в элемент, будут отображаться в последовательности, к которой относятся итераторы.

Примечание: Эта функция будет заблокирована до достижения итератором конца обрабатываемой последовательности.

См. также map() и Конкурентное отображение и отображение-сведение.

OutputSequence QtConcurrent::blockingMapped(const InputSequence &sequence, MapFunctor function)

Вызывает function один раз для каждого элемента в sequence и возвращает OutputSequence, содержащую результаты. Тип результатов будет соответствовать типу, возвращаемому MapFunctor.

Примечание: Эта функция будет заблокирована до обработки всех элементов в последовательности.

См. также mapped() и Конкурентное отображение и отображение-сведение.

Sequence QtConcurrent::blockingMapped(Iterator begin, Iterator end, MapFunctor function)

Вызывает function один раз для каждого элемента от begin до end и возвращает контейнер с результатами. Укажите тип контейнера как аргумент шаблона, например так:

QList<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);

Примечание: Эта функция будет заблокирована до достижения итератором конца обрабатываемой последовательности.

См. также mapped() и Конкурентное отображение и отображение-сведение.

ResultType QtConcurrent::blockingMappedReduced(const Sequence &sequence, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает mapFunction один раз для каждого элемента в sequence. Возвращаемое значение каждого вызова mapFunction передаётся в reduceFunction.

Обратите внимание, что, хотя mapFunction вызывается конкуретно, только одна нить одновременно вызовет reduceFunction. Порядок вызова reduceFunction определяется reduceOptions.

Примечание: Эта функция будет заблокирована до обработки всех элементов в последовательности.

См. также mapped() и Конкурентное отображение и отображение-сведение.

ResultType QtConcurrent::blockingMappedReduced(Iterator begin, Iterator end, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))

Вызывает mapFunction один раз для каждого элемента от begin до end. Возвращаемое значение каждого вызова mapFunction передаётся в reduceFunction.

Обратите внимание, что, хотя mapFunction вызывается конкуретно, только одна нить одновременно вызовет reduceFunction. Порядок вызова не определён.

Примечание: Эта функция будет заблокирована до достижения итератором конца обрабатываемой последовательности.

См. также blockingMappedReduced() и Конкурентное отображение и отображение-сведение.

QFuture<void> QtConcurrent::filter(Sequence &sequence, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае, элемент удаляется из sequence.

См. также Конкурентный фильтр и фильтр-сведение.

QFuture<typename Sequence::value_type> QtConcurrent::filtered(const Sequence &sequence, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую Последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую Последовательность. В противном случае, элемент не появится в новой Последовательности.

См. также Конкурентный фильтр и фильтр-сведение.

QFuture<typename qValueType<Iterator>::value_type> QtConcurrent::filtered(Iterator begin, Iterator end, KeepFunctor filterFunction)

Вызывает filterFunction один раз для каждого элемента от begin до end и возвращает новую Последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую Последовательность. В противном случае, элемент не появится в новой Последовательности.

См. также Конкурентный фильтр и фильтр-сведение.

QFuture<ResultType> QtConcurrent::filteredReduced(const Sequence &sequence, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — это результат reduceFunction для каждого элемента, где filterFunction возвращает true.

Обратите внимание, что хотя filterFunction вызывается конкурирующим образом, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.

См. также Конкурентный фильтр и фильтр-редукция.

QFuture<ResultType> QtConcurrent::filteredReduced(Iterator begin, Iterator end, KeepFunctor filterFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает filterFunction один раз для каждого элемента от begin до end. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — это результат reduceFunction для каждого элемента, где filterFunction возвращает true.

Обратите внимание, что хотя filterFunction вызывается конкурирующим образом, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.

См. также Конкурентный фильтр и фильтр-редукция.

QFuture<void> QtConcurrent::map(Sequence &sequence, MapFunctor function)

Вызывает function один раз для каждого элемента в sequence. Функция function получает ссылку на элемент, поэтому любые изменения, внесённые в элемент, отобразятся в sequence.

См. также Конкурентное отображение и отображение-редукция.

QFuture<void> QtConcurrent::map(Iterator begin, Iterator end, MapFunctor function)

Вызывает function один раз для каждого элемента от begin до end. Функция function получает ссылку на элемент, поэтому любые изменения, внесённые в элемент, отобразятся в последовательности, к которой относятся указатели.

См. также Конкурентное отображение и отображение-редукция.

QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> QtConcurrent::mapped(const Sequence &sequence, MapFunctor function)

Вызывает function один раз для каждого элемента в sequence и возвращает будущую задачу с каждым отображённым элементом в качестве результата. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.

См. также Конкурентное отображение и отображение-редукция.

QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> QtConcurrent::mapped(Iterator begin, Iterator end, MapFunctor function)

Вызывает function один раз для каждого элемента от begin до end и возвращает будущую задачу с каждым отображённым элементом в качестве результата. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.

См. также Конкурентное отображение и отображение-редукция.

QFuture<ResultType> QtConcurrent::mappedReduced(const Sequence &sequence, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает mapFunction один раз для каждого элемента в sequence. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.

Обратите внимание, что хотя mapFunction вызывается конкурирующим образом, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.

См. также Конкурентное отображение и отображение-редукция.

QFuture<ResultType> QtConcurrent::mappedReduced(Iterator begin, Iterator end, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

Вызывает mapFunction один раз для каждого элемента от begin до end. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.

Обратите внимание, что хотя mapFunction вызывается конкурирующим образом, только одна нить за раз будет вызывать reduceFunction. По умолчанию порядок вызова reduceFunction не определён.

Примечание: QtConcurrent::OrderedReduce приводит к упорядоченной редукции.

См. также Конкурентное отображение и отображение-редукция.

QFuture<T> QtConcurrent::run(Function function, ...)

Эквивалентно

QtConcurrent::run(QThreadPool::globalInstance(), function, ...);

Выполняет function в отдельной потоке. Поток берется из глобального пула QThreadPool. Обратите внимание, что function может не выполняться сразу; function будет выполнен только при наличии доступного потока.

T — тот же тип, что и возвращаемое значение function. Значения, возвращаемые не void, доступны через функцию QFuture::result().

Обратите внимание, что QFuture, возвращаемая QtConcurrent::run(), не поддерживает отмену, приостановку или отчёт о прогрессе. Возвращаемая QFuture может использоваться только для запроса состояния выполнения/завершения и значения возврата функции.

См. также Конкурентное выполнение.

QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...)

Выполняет function в отдельной нити. Поток берётся из пула QThreadPool pool. Обратите внимание, что function может не выполняться сразу; function будет выполнен только при наличии доступного потока.

T — тот же тип, что и возвращаемое значение function. Значения, возвращаемые не void, доступны через функцию QFuture::result().

Обратите внимание, что QFuture, возвращаемая QtConcurrent::run(), не поддерживает отмену, приостановку или отчёт о прогрессе. Возвращаемая QFuture может использоваться только для запроса состояния выполнения/завершения и значения возврата функции.

Эта функция была представлена в Qt 5.4.

См. также Конкурентное выполнение.

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

Spec-Zone.ru

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