Пространство имен QtConcurrent
Пространство имен QtConcurrent предоставляет высокоуровневые API, которые позволяют писать многопоточные программы без использования низкоуровневых потоковых примитивов. Подробнее...
| Заголовок: | #include <QtConcurrent> |
| CMake: | find_package(Qt6 COMPONENTS Concurrent REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Concurrent) |
| qmake: | QT += concurrent |
Классы
| класс | QTaskBuilder |
Типы
| перечисление | FutureResult { Ignore } |
| InvokeResultType | |
| перечисление | ReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce } |
| флаги | ReduceOptions |
Функции
| void | blockingFilter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction) |
| void | blockingFilter(Sequence &sequence, KeepFunctor &&filterFunction) |
| std::decay_t<Sequence> | blockingFiltered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction) |
| std::decay_t<Sequence> | blockingFiltered(Sequence &&sequence, KeepFunctor &&filterFunction) |
| OutputSequence | blockingFiltered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
| OutputSequence | blockingFiltered(Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
| ResultType | blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingFilteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingFilteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingFilteredReduced(QThreadPool *pool, Iterator begin, Iterator end, 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)) |
| ResultType | blockingFilteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingFilteredReduced(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| void | blockingMap(QThreadPool *pool, Sequence &&sequence, MapFunctor function) |
| void | blockingMap(Sequence &&sequence, MapFunctor &&function) |
| void | blockingMap(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function) |
| void | blockingMap(Iterator begin, Iterator end, MapFunctor &&function) |
| OutputSequence | blockingMapped(QThreadPool *pool, InputSequence &&sequence, MapFunctor &&function) |
| OutputSequence | blockingMapped(InputSequence &&sequence, MapFunctor &&function) |
| Sequence | blockingMapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function) |
| Sequence | blockingMapped(Iterator begin, Iterator end, MapFunctor &&function) |
| ResultType | blockingMappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| ResultType | blockingMappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<void> | filter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction) |
| QFuture<void> | filter(Sequence &sequence, KeepFunctor &&filterFunction) |
| QFuture<typename std::decay_t<Sequence>::value_type> | filtered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction) |
| QFuture<typename std::decay_t<Sequence>::value_type> | filtered(Sequence &&sequence, KeepFunctor &&filterFunction) |
| QFuture<typename qValueType<Iterator>::value_type> | filtered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
| QFuture<typename qValueType<Iterator>::value_type> | filtered(Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
| QFuture<ResultType> | filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | filteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | filteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | filteredReduced(QThreadPool *pool, Iterator begin, Iterator end, 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<ResultType> | filteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | filteredReduced(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<void> | map(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function) |
| QFuture<void> | map(Sequence &&sequence, MapFunctor &&function) |
| QFuture<void> | map(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function) |
| QFuture<void> | map(Iterator begin, Iterator end, MapFunctor &&function) |
| QFuture<QtPrivate::MapResultType<Sequence, MapFunctor> > | mapped(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function) |
| QFuture<QtPrivate::MapResultType<Sequence, MapFunctor> > | mapped(Sequence &&sequence, MapFunctor &&function) |
| QFuture<QtPrivate::MapResultType<Iterator, MapFunctor> > | mapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function) |
| QFuture<QtPrivate::MapResultType<Iterator, MapFunctor> > | mapped(Iterator begin, Iterator end, MapFunctor &&function) |
| QFuture<ResultType> | mappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | mappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | mappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | mappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | mappedReduced(QThreadPool *pool, Iterator begin, Iterator end, 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<ResultType> | mappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<ResultType> | mappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
| QFuture<T> | run(Function function, ...) |
| QFuture<T> | run(QThreadPool *pool, Function function, ...) |
| QTaskBuilder<Task> | task(Task &&task) |
Подробное описание
См. документацию модуля Qt Concurrent для обзора доступных функций или см. ниже подробную информацию о каждой функции.
Классы
класс QTaskBuilder
Класс QTaskBuilder используется для настройки параметров задачи. Подробнее...
Документация типов
перечисление QtConcurrent::FutureResult
Это тип перечисления используется для вызова специальной перегрузки QtConcurrent::QTaskBuilder::spawn(QtConcurrent::FutureResult), которая не возвращает объект будущего.
| Константа | Значение | Описание |
|---|---|---|
QtConcurrent::FutureResult::Ignore |
0 |
Вспомогательная метка, добавленная для повышения читаемости кода. |
[alias] InvokeResultType
Упрощенное определение этого типа выглядит так:
template <class Task, class ...Args> using InvokeResultType = std::invoke_result_t<std::decay_t<Task>, std::decay_t<Args>...>;
Реальное реализация также содержит проверку времени компиляции, проверяющую, может ли задача быть вызвана с указанными аргументами или нет.
перечисление QtConcurrent::ReduceOptionфлаги QtConcurrent::ReduceOptions
Это перечисление определяет порядок, в котором результаты из функции map или filter передаются функции reduce.
| Константа | Значение | Описание |
|---|---|---|
QtConcurrent::UnorderedReduce |
0x1 |
Сведение выполняется в произвольном порядке. |
QtConcurrent::OrderedReduce |
0x2 |
Сведение выполняется в порядке исходной последовательности. |
QtConcurrent::SequentialReduce |
0x4 |
Сведение выполняется последовательно: только одна нить может войти в функцию reduce за раз. (Параллельное сведение может быть реализовано в будущей версии Qt Concurrent.) |
Тип ReduceOptions является псевдонимом для QFlags<ReduceOption>. Он хранит логическое ИЛИ комбинацию значений ReduceOption.
Документация функций
шаблон <typename Sequence, typename KeepFunctor> void QtConcurrent::blockingFilter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае элемент удаляется из sequence.
Обратите внимание, что у этого метода нет перегрузки, работающей с итераторами, потому что он делает итераторы последовательности недействительными.
Примечание: Эта функция будет заблокирована, пока все элементы в последовательности не будут обработаны.
См. также Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename Sequence, typename KeepFunctor> void QtConcurrent::blockingFilter(Sequence &sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае элемент удаляется из sequence.
Обратите внимание, что у этого метода нет перегрузки, работающей с итераторами, потому что он делает итераторы последовательности недействительными.
Примечание: Эта функция будет заблокирована, пока все элементы в последовательности не будут обработаны.
См. также Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename Sequence, typename KeepFunctor> std::decay_t<Sequence> QtConcurrent::blockingFiltered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую последовательность сохраненных элементов. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет в новой последовательности.
Примечание: Эта функция будет заблокирована, пока все элементы в последовательности не будут обработаны.
См. также filtered() и Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename Sequence, typename KeepFunctor> std::decay_t<Sequence> QtConcurrent::blockingFiltered(Sequence &&sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую последовательность сохраненных элементов. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет в новой последовательности.
Примечание: Эта функция будет заблокирована, пока все элементы в последовательности не будут обработаны.
См. также filtered() и Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction)
Вызывает filterFunction для каждого элемента от begin до end и возвращает новую последовательность сохраненных элементов. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет в новой последовательности.
Примечание: Эта функция будет заблокирована, пока итератор не достигнет конца обрабатываемой последовательности.
См. также filtered() и Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(Iterator begin, Iterator end, KeepFunctor &&filterFunction)
Вызывает filterFunction для каждого элемента от begin до end и возвращает новую последовательность сохраненных элементов. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет в новой последовательности.
Примечание: Эта функция будет заблокирована, пока итератор не достигнет конца обрабатываемой последовательности.
См. также filtered() и Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction для каждого элемента в sequence. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true.
Обратите внимание, что, хотя filterFunction вызывается параллельно, только одна нить одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована, пока все элементы в последовательности не будут обработаны.
См. также filteredReduced() и Конкурентное фильтрование и фильтрующее сведение.
шаблон <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingFilteredReduced(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() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента в sequence. Все вызовы filterFunction вызываются из нитей, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы последовательности не будут обработаны.
См. также filteredReduced() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingFilteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы последовательности не будут обработаны.
См. также filteredReduced() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingFilteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Все вызовы filterFunction вызываются из нитей, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также filteredReduced() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor> 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() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingFilteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Все вызовы filterFunction вызываются из нитей, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions имеет значение QtConcurrent::UnorderedReduce. Если reduceOptions имеет значение QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также filteredReduced() и Параллельное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingFilteredReduced(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, для которого filterFunction возвращает true. Значение результата инициализируется значением initialValue при вызове функции, а первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить одновременно вызовет reduceFunction. Порядок, в котором вызывается reduceFunction, не определён, если reduceOptions равно QtConcurrent::UnorderedReduce. Если reduceOptions равно QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также filteredReduced() и Конкурентное фильтрование и фильтрующее сокращение.
template <typename Sequence, typename MapFunctor> void QtConcurrent::blockingMap(QThreadPool *pool, Sequence &&sequence, MapFunctor function)
Вызывает function один раз для каждого элемента в sequence. Все вызовы function вызываются из потоков, взятых из QThreadPool pool. function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, будут отображаться в sequence.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также map() и Конкурентное отображение и отображение-сокращение.
template <typename Sequence, typename MapFunctor> void QtConcurrent::blockingMap(Sequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence. function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, будут отображаться в sequence.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также map() и Конкурентное отображение и отображение-сокращение.
template <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end. Все вызовы function вызываются из потоков, взятых из QThreadPool pool. function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, будут отображаться в последовательности, к которой относятся итераторы.
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также map() и Конкурентное отображение и отображение-сокращение.
template <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end. function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, будут отображаться в последовательности, к которой относятся итераторы.
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также map() и Конкурентное отображение и отображение-сокращение.
template <typename OutputSequence, typename InputSequence, typename MapFunctor> OutputSequence QtConcurrent::blockingMapped(QThreadPool *pool, InputSequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence и возвращает OutputSequence, содержащую результаты. Все вызовы function вызываются из потоков, взятых из QThreadPool pool. Тип результатов будет соответствовать типу, возвращаемому MapFunctor.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
template <typename OutputSequence, typename InputSequence, typename MapFunctor> OutputSequence QtConcurrent::blockingMapped(InputSequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence и возвращает OutputSequence, содержащую результаты. Тип результатов будет соответствовать типу, возвращаемому MapFunctor.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
template <typename Sequence, typename Iterator, typename MapFunctor> Sequence QtConcurrent::blockingMapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end и возвращает контейнер с результатами. Вы можете указать тип контейнера в качестве аргумента шаблона, например так:
QList<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
template <typename Sequence, typename Iterator, typename MapFunctor> Sequence QtConcurrent::blockingMapped(Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end и возвращает контейнер с результатами. Вы можете указать тип контейнера в качестве аргумента шаблона, например так:
QList<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);
Примечание: Эта функция будет заблокирована до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingMappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Все вызовы mapFunction вызываются из потоков, взятых из QThreadPool pool. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только одна нить одновременно вызовет reduceFunction. Порядок, в котором вызывается reduceFunction, определяется reduceOptions.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingMappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только одна нить одновременно вызовет reduceFunction. Порядок, в котором вызывается reduceFunction, определяется reduceOptions.
Примечание: Эта функция будет заблокирована до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Конкурентное отображение и отображение-сокращение.
END_OF_DOCUMENT_MARKERtemplate <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingMappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Возвращаемое значение каждого mapFunction передаётся в reduceFunction. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
Примечание: Эта функция будет блокироваться до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Параллельное преобразование и Map-Reduce.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingMappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Возвращаемое значение каждого mapFunction передаётся в reduceFunction. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
Примечание: Эта функция будет блокироваться до тех пор, пока все элементы в последовательности не будут обработаны.
См. также mapped() и Параллельное преобразование и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingMappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён.
Примечание: Эта функция будет блокироваться до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также blockingMappedReduced() и Параллельное преобразование и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingMappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Возвращаемое значение каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён.
Примечание: Эта функция будет блокироваться до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также blockingMappedReduced() и Параллельное преобразование и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingMappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Возвращаемое значение каждого mapFunction передаётся в reduceFunction. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён.
Примечание: Эта функция будет блокироваться до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также blockingMappedReduced() и Параллельное преобразование и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> ResultType QtConcurrent::blockingMappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Возвращаемое значение каждого mapFunction передаётся в reduceFunction. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён.
Примечание: Эта функция будет блокироваться до тех пор, пока итератор не достигнет конца обрабатываемой последовательности.
См. также blockingMappedReduced() и Параллельное преобразование и Map-Reduce.
template <typename Sequence, typename KeepFunctor> QFuture<void> QtConcurrent::filter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence. Все вызовы filterFunction выполняются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае, элемент удаляется из sequence.
Обратите внимание, что этот метод не имеет перегрузки, работающей с итераторами, потому что он делает итераторы последовательности недействительными.
См. также Параллельный фильтр и Filter-Reduce.
template <typename Sequence, typename KeepFunctor> QFuture<void> QtConcurrent::filter(Sequence &sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true, элемент сохраняется в sequence; в противном случае, элемент удаляется из sequence.
Обратите внимание, что этот метод не имеет перегрузки, работающей с итераторами, потому что он делает итераторы последовательности недействительными.
См. также Параллельный фильтр и Filter-Reduce.
template <typename Sequence, typename KeepFunctor> QFuture<typename std::decay_t<Sequence>::value_type> QtConcurrent::filtered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую последовательность сохранённых элементов. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет отображаться в новой последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename Sequence, typename KeepFunctor> QFuture<typename std::decay_t<Sequence>::value_type> QtConcurrent::filtered(Sequence &&sequence, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента в sequence и возвращает новую последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет отображаться в новой последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename Iterator, typename KeepFunctor> QFuture<typename qValueType<Iterator>::value_type> QtConcurrent::filtered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента от begin до end и возвращает новую последовательность сохранённых элементов. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет отображаться в новой последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename Iterator, typename KeepFunctor> QFuture<typename qValueType<Iterator>::value_type> QtConcurrent::filtered(Iterator begin, Iterator end, KeepFunctor &&filterFunction)
Вызывает filterFunction один раз для каждого элемента от begin до end и возвращает новую последовательность сохранённых элементов. Если filterFunction возвращает true, копия элемента помещается в новую последовательность. В противном случае элемент не будет отображаться в новой последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента в sequence. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true.
Обратите внимание, что в то время как filterFunction вызывается конкурирующим образом, только один поток одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions — QtConcurrent::UnorderedReduce. Если reduceOptions — QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::filteredReduced(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 вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента в sequence. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true. Результатное значение инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как filterFunction вызывается конкурирующим образом, только один поток одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions — QtConcurrent::UnorderedReduce. Если reduceOptions — QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::filteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента в sequence. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true. Результатное значение инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что в то время как filterFunction вызывается конкурирующим образом, только один поток одновременно вызовет reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions — QtConcurrent::UnorderedReduce. Если reduceOptions — QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Все вызовы filterFunction вызываются из потоков, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions равен QtConcurrent::UnorderedReduce. Если reduceOptions равен QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor> 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 вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Все вызовы filterFunction выполняются из нитей, взятых из QThreadPool pool. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true. Значение результата инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет выполняться над этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions равен QtConcurrent::UnorderedReduce. Если reduceOptions равен QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::filteredReduced(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает filterFunction один раз для каждого элемента от begin до end. Если filterFunction возвращает true для элемента, этот элемент передаётся в reduceFunction. Другими словами, возвращаемое значение — результат reduceFunction для каждого элемента, где filterFunction возвращает true. Значение результата инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет выполняться над этим значением.
Обратите внимание, что хотя filterFunction вызывается параллельно, только одна нить за раз будет вызывать reduceFunction. Порядок вызова reduceFunction не определён, если reduceOptions равен QtConcurrent::UnorderedReduce. Если reduceOptions равен QtConcurrent::OrderedReduce, reduceFunction вызывается в порядке исходной последовательности.
См. также Конкурентное фильтрация и фильтрация-сведение.
template <typename Sequence, typename MapFunctor> QFuture<void> QtConcurrent::map(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence. Все вызовы function выполняются из нитей, взятых из QThreadPool pool. Функция function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, отобразятся в sequence.
См. также Конкурентное отображение и отображение-сведение.
template <typename Sequence, typename MapFunctor> QFuture<void> QtConcurrent::map(Sequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence. Функция function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, отобразятся в sequence.
См. также Конкурентное отображение и отображение-сведение.
template <typename Iterator, typename MapFunctor> QFuture<void> QtConcurrent::map(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end. Все вызовы function выполняются из нитей, взятых из QThreadPool pool. Функция function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, отобразятся в последовательности, к которой относятся указатели.
См. также Конкурентное отображение и отображение-сведение.
template <typename Iterator, typename MapFunctor> QFuture<void> QtConcurrent::map(Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end. Функция function принимает ссылку на элемент, так что любые изменения, внесённые в элемент, отобразятся в последовательности, к которой относятся указатели.
См. также Конкурентное отображение и отображение-сведение.
template <typename Sequence, typename MapFunctor> QFuture<QtPrivate::MapResultType<Sequence, MapFunctor> > QtConcurrent::mapped(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence и возвращает будущее с каждым отображённым элементом в качестве результата. Все вызовы function выполняются из нитей, взятых из QThreadPool pool. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.
См. также Конкурентное отображение и отображение-сведение.
template <typename Sequence, typename MapFunctor> QFuture<QtPrivate::MapResultType<Sequence, MapFunctor> > QtConcurrent::mapped(Sequence &&sequence, MapFunctor &&function)
Вызывает function один раз для каждого элемента в sequence и возвращает будущее с каждым отображённым элементом в качестве результата. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.
См. также Конкурентное отображение и отображение-сведение.
template <typename Iterator, typename MapFunctor> QFuture<QtPrivate::MapResultType<Iterator, MapFunctor> > QtConcurrent::mapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
Вызывает функцию function один раз для каждого элемента от begin до end и возвращает будущее с каждым отображённым элементом в качестве результата. Все вызовы function вызываются из потоков, взятых из QThreadPool pool. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.
См. также Одновременное отображение и Map-Reduce.
template <typename Iterator, typename MapFunctor> QFuture<QtPrivate::MapResultType<Iterator, MapFunctor> > QtConcurrent::mapped(Iterator begin, Iterator end, MapFunctor &&function)
Вызывает function один раз для каждого элемента от begin до end и возвращает будущее с каждым отображённым элементом в качестве результата. Вы можете использовать QFuture::const_iterator или QFutureIterator для итерации по результатам.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::mappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Значение возврата каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::mappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Значение возврата каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::mappedReduced(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Значение возврата каждого mapFunction передаётся в reduceFunction. Результат инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::mappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента в sequence. Значение возврата каждого mapFunction передаётся в reduceFunction. Результат инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. Порядок вызова reduceFunction определяется параметром reduceOptions.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor> QFuture<ResultType> QtConcurrent::mappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Значение возврата каждого mapFunction передаётся в reduceFunction.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. По умолчанию порядок вызова reduceFunction не определён.
Примечание: QtConcurrent::OrderedReduce приводит к упорядоченному сокращению.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor> 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 приводит к упорядоченному сокращению.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::mappedReduced(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Все вызовы mapFunction выполняются из потоков, взятых из QThreadPool pool. Значение возврата каждого mapFunction передаётся в reduceFunction. Результат инициализируется значением initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что, хотя mapFunction вызывается параллельно, только один поток за раз будет вызывать reduceFunction. По умолчанию порядок вызова reduceFunction не определён.
Примечание: QtConcurrent::OrderedReduce приводит к упорядоченному сокращению.
См. также Одновременное отображение и Map-Reduce.
template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor, typename InitialValueType> QFuture<ResultType> QtConcurrent::mappedReduced(Iterator begin, Iterator end, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
Вызывает mapFunction один раз для каждого элемента от begin до end. Возвращаемое значение каждой mapFunction передаётся в reduceFunction. Значение результата инициализируется initialValue при вызове функции, и первый вызов reduceFunction будет работать с этим значением.
Обратите внимание, что, хотя mapFunction вызывается конкурирующим образом, только одна нить одновременно будет вызывать reduceFunction. По умолчанию порядок, в котором вызывается reduceFunction, не определён.
Примечание: QtConcurrent::OrderedReduce приводит к упорядоченному сокращению.
См. также Конкурентное отображение и отображение-сокращение.
template <typename T> QFuture<T> QtConcurrent::run(Function function, ...)
Эквивалентно
QtConcurrent::run(QThreadPool::globalInstance(), function, ...);
Выполняет function в отдельной нити. Нить берётся из глобального QThreadPool. Обратите внимание, что function может не выполняться немедленно; function будет выполнен только при появлении доступной нити.
В режиме основного режима тип T совпадает с типом возвращаемого значения function. Значения, возвращаемые не void, могут быть получены через функцию QFuture::result().
В основном режиме возвращаемый QFuture может использоваться только для запроса статуса выполнения/завершения и возвращаемого значения функции. В частности, отмена или приостановка могут быть выполнены только в случае, если вычисления, стоящие за будущим, ещё не начались.
В режиме выполнения с обещанием, функция function ожидает возвращения void и должна принимать дополнительный аргумент типа QPromise<T> & , помещённый в качестве первого аргумента в список аргументов функции. Тип T является типом результата, и он совпадает с типом возвращаемого QFuture<T>.
В режиме выполнения с обещанием, аналогично основному режиму, возвращаемый QFuture может использоваться для запроса статуса выполнения/завершения и значения, сообщённого функцией. Кроме того, он может использоваться для приостановки или отмены задачи, получения нескольких результатов от вызываемой function или отслеживания прогресса, сообщённого function.
См. также Конкурентное выполнение (основной режим) и Конкурентное выполнение с обещанием.
[since 5.4] template <typename T> QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...)
Выполняет function в отдельной нити. Нить берётся из QThreadPool pool. Обратите внимание, что function может не выполняться немедленно; function будет выполнен только при появлении доступной нити.
В режиме основного режима тип T совпадает с типом возвращаемого значения function. Значения, возвращаемые не void, могут быть получены через функцию QFuture::result().
В режиме основного режима возвращаемый QFuture может использоваться только для запроса статуса выполнения/завершения и возвращаемого значения функции. В частности, отмена или приостановка могут быть выполнены только в случае, если вычисления, стоящие за будущим, ещё не начались.
В режиме выполнения с обещанием, функция function ожидает возвращения void и должна принимать дополнительный аргумент типа QPromise<T> & , помещённый в качестве первого аргумента в список аргументов функции. Тип T является типом результата, и он совпадает с типом возвращаемого QFuture<T>.
В режиме выполнения с обещанием, аналогично основному режиму, возвращаемый QFuture может использоваться для запроса статуса выполнения/завершения и значения, сообщённого функцией. Кроме того, он может использоваться для приостановки или отмены задачи, получения нескольких результатов от вызываемой function или отслеживания прогресса, сообщённого function.
Эта функция была введена в Qt 5.4.
См. также Конкурентное выполнение (основной режим) и Конкурентное выполнение с обещанием.
[since 6.0] template <typename Task> QTaskBuilder<Task> QtConcurrent::task(Task &&task)
Создаёт экземпляр QtConcurrent::QTaskBuilder. Этот объект может быть использован для корректировки некоторых параметров и выполнения task в отдельной нити.
Эта функция была введена в Qt 6.0.
См. также Конкурентная задача и QtConcurrent::QTaskBuilder.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qtconcurrent.html