Spec-Zone.ru › Qt 5.9

Пространство имён 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)
QFuture<T> filtered(const Sequence &sequence, FilterFunction filterFunction)
QFuture<T> filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
QFuture<T> filteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
QFuture<T> filteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
QFuture<void> map(Sequence &sequence, MapFunction function)
QFuture<void> map(Iterator begin, Iterator end, MapFunction function)
QFuture<T> mapped(const Sequence &sequence, MapFunction function)
QFuture<T> mapped(ConstIterator begin, ConstIterator end, MapFunction function)
QFuture<T> mappedReduced(const Sequence &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
QFuture<T> mappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce)
QFuture<T> run(Function function, ...)
QFuture<T> run(QThreadPool *pool, Function function, ...)

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

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

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

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

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

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

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

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

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

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

Sequence QtConcurrent::blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)

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

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

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

T QtConcurrent::blockingFilteredReduced(const Sequence &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 &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 &sequence, MapFunction function)

Вызывает function для каждого элемента в sequence и возвращает 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 &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 &sequence, FilterFunction filterFunction)

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

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

QFuture<T> QtConcurrent::filtered(const Sequence &sequence, FilterFunction filterFunction)

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

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

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

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

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

QFuture<T> QtConcurrent::filteredReduced(const Sequence &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().

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

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

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

Spec-Zone.ru

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