Spec-Zone.ru › Qt 5.14

Пространство имён 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<void> filter(Sequence &sequence, KeepFunctor filterFunction)
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 — это псевдоним для 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. Порядок вызова 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 можно использовать только для запроса состояния выполнения/завершения и возвращаемого значения функции. В частности, отмену или приостановку можно выполнить только в том случае, если вычисления, лежащие в основе будущего, ещё не начались.

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

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.14/qtconcurrent.html

Spec-Zone.ru

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