Spec-Zone.ru › Qt 5.6

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

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

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

Типы

Перечисление ReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce }
Флаги ReduceOptions

Функции

void blockingFilter(Sequence &sequence, FilterFunction filterFunction)
Sequence blockingFiltered(const Sequence &sequence, FilterFunction filterFunction)
Sequence blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
T blockingFilteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
T blockingFilteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
void blockingMap(Sequence &sequence, MapFunction function)
void blockingMap(Iterator begin, Iterator end, MapFunction function)
T blockingMapped(const Sequence &sequence, MapFunction function)
T blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function)
T blockingMappedReduced(const Sequence &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
T blockingMappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
QFuture<void> filter(Sequence &sequence, FilterFunction filterFunction)

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

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

См. документацию модуля 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.

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

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

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

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

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

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

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

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

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

END_OF_DOCUMENT_MARKER

Последовательность QtConcurrent::blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)

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

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

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

T QtConcurrent::blockingFilteredReduced(const Последовательность &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

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

T QtConcurrent::blockingFilteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::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, MapFunction function)

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

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

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

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

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

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

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

T QtConcurrent::blockingMapped(const Последовательность &sequence, MapFunction function)

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

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

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

T QtConcurrent::blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function)

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

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

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

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

T QtConcurrent::blockingMappedReduced(const Последовательность &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

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

T QtConcurrent::blockingMappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

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

QFuture<void> QtConcurrent::filter(Последовательность &sequence, FilterFunction filterFunction)

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

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

QFuture<T> QtConcurrent::filtered(const Последовательность &sequence, FilterFunction filterFunction)

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

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

QFuture<T> QtConcurrent::filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)

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

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

QFuture<T> QtConcurrent::filteredReduced(const Последовательность &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

QFuture<T> QtConcurrent::filteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::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, MapFunction function)

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

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

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

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

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

QFuture<T> QtConcurrent::mapped(const Sequence &sequence, MapFunction function)

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

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

QFuture<T> QtConcurrent::mapped(ConstIterator begin, ConstIterator end, MapFunction function)

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

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

QFuture<T> QtConcurrent::mappedReduced(const Sequence &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

QFuture<T> QtConcurrent::mappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Spec-Zone.ru

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