Spec-Zone.ru › Qt 5.15

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

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

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

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

  • Устаревшие члены

Типы

перечисление ReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce }
флаги 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<T> run(Function function, ...)
QFuture<T> run(QThreadPool *pool, Function function, ...)

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

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

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

перечисление QtConcurrent::ReduceOptionфлаги QtConcurrent::ReduceOptions

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

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

Тип ReduceOptions — это typedef для QFlags<ReduceOption>. Он хранит логическое ИЛИ сочетание значений ReduceOption.

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

template <typename Sequence, typename KeepFunctor> void QtConcurrent::blockingFilter(Sequence &sequence, KeepFunctor filterFunction)

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

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

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

template <typename Sequence, typename KeepFunctor> Sequence QtConcurrent::blockingFiltered(const Sequence &sequence, KeepFunctor filterFunction)

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

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

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

template <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(Iterator begin, Iterator end, KeepFunctor filterFunction)

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

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

См. также filtered() и Конкурентное Фильтрация и Фильтр-Сведение.

template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> 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() и Конкурентное Фильтрация и Фильтр-Сведение.

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 Sequence, typename MapFunctor> void QtConcurrent::blockingMap(Sequence &sequence, MapFunctor function)

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

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

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

template <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunctor function)

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

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

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

template <typename OutputSequence, typename InputSequence, typename MapFunctor> OutputSequence QtConcurrent::blockingMapped(const InputSequence &sequence, MapFunctor function)

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

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

См. также 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(const Sequence &sequence, MapFunctor mapFunction, ReduceFunctor reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))

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

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

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

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

template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor> 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. Порядок вызова reduceFunction не определён.

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

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

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

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

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

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

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

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

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

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

См. также Конкурентное фильтрование и фильтрующее сокращение.

template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor> 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 вызывается в порядке исходной последовательности.

См. также Конкурентное фильтрование и фильтрующее сокращение.

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 Sequence, typename MapFunctor> QFuture<void> QtConcurrent::map(Sequence &sequence, MapFunctor function)

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

См. также Конкурентное отображение и отображение-сокращение.

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<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> QtConcurrent::mapped(const Sequence &sequence, MapFunctor function)

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

См. также Конкурентное отображение и отображение-сокращение.

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

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

См. также Конкурентное отображение и отображение-сокращение.

template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> 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.

См. также Конкурентное отображение и отображение-сокращение.

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 приводит к упорядоченному сокращению.

См. также Конкурентное отображение и отображение-сокращение.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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