QtConcurrent命名空间
QtConcurrent命名空间提供高级API,使得可以编写无需使用底层线程原语的并发程序。更多...
头文件 | #include <QtConcurrent> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Concurrent) target_link_libraries(mytarget PRIVATE Qt6::Concurrent) |
qmake | QT += concurrent |
- QtConcurrent是线程类的一部分。
类
(since 6.0) 类 | QTaskBuilder |
类型
enum class | FutureResult { Ignore } |
InvokeResultType | |
enum | ReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce } |
flags | 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) |
输出序列 | blockingFiltered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
输出序列 | blockingFiltered(Iterator begin, Iterator end, KeepFunctor &&filterFunction) |
结果类型 | blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
结果类型 | blockingFilteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
结果类型 | blockingFilteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
结果类型 | blockingFilteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(Unordered Reduce | SequentialReduce)) |
结果类型 | blockingFilteredReduced(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce)) |
结果类型 | blockingFilteredReduced(迭代器 begin, 迭代器 end, 保持函数 &&filterFunction,减少函数 &&reduceFunction,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingFilteredReduced(QThreadPool *pool,迭代器 begin,迭代器 end,保持函数 &&filterFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingFilteredReduced(迭代器 begin,迭代器 end,保持函数 &&filterFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
void | blockingMap(QThreadPool *pool,序列 &&sequence,映射函数 function) |
void | blockingMap(序列 &&sequence,映射函数 &&function) |
void | blockingMap(QThreadPool *pool,迭代器 begin,迭代器 end,映射函数 &&function) |
void | blockingMap(迭代器 begin,迭代器 end,映射函数 &&function) |
输出序列 | blockingMapped(QThreadPool *pool,输入序列 &&sequence,映射函数 &&function) |
输出序列 | blockingMapped(输入序列 &&sequence,映射函数 &&function) |
序列 | blockingMapped(QThreadPool *pool,迭代器 begin,迭代器 end,映射函数 &&function) |
序列 | blockingMapped(迭代器 begin,迭代器 end,映射函数 &&function) |
结果类型 | blockingMappedReduced(QThreadPool *pool,序列 &&sequence,映射函数 &&mapFunction,减少函数 &&reduceFunction,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(序列 &&sequence,映射函数 &&mapFunction,减少函数 &&reduceFunction,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(QThreadPool *pool,序列 &&sequence,映射函数 &&mapFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(序列 &&sequence,映射函数 &&mapFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(QThreadPool *pool,迭代器 begin,迭代器 end,映射函数 &&mapFunction,减少函数 &&reduceFunction,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(迭代器 begin,迭代器 end,映射函数 &&mapFunction,减少函数 &&reduceFunction,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(QThreadPool *pool,迭代器 begin,迭代器 end,映射函数 &&mapFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
结果类型 | blockingMappedReduced(迭代器 begin,迭代器 end,映射函数 &&mapFunction,减少函数 &&reduceFunction,初始值类型 &&initialValue,QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(无序减少 | 顺序减少)) |
QFuture | filter(QThreadPool *pool,序列 sequence,保持函数 &&filterFunction) |
QFuture | 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 &&_amp;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 | map(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function) |
QFuture | map(Sequence &&sequence, MapFunctor &&and:function) |
QFuture | map(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&orgeous:function) |
QFuture | map(Iterator begin, Iterator end, MapFunctor &&and:function) |
QFuture<QtPrivate::MapResultType<Sequence, MapFunctor>> | mapped(QThreadPool *pool, Sequence &&and:sequence, MapFunctor &&and:function) |
QFuture<QtPrivate::MapResultType<Sequence, MapFunctor>> | mapped(Sequence && и:sequence, MapFunctor &&and:function) |
QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> | mapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&and:function) |
QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> | mapped(Iterator begin, Iterator end, MapFunctor &&and:function) |
QFuture<ResultType> | mappedReduced(QThreadPool *pool, Sequence &&ng:sequence, MapFunctor &&弱:mapFunction, ReduceFunctor &&agate: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, ...) |
(since 6.0) QtConcurrent::QTaskBuilder<Task> | task(Task &&task) |
详细描述
请参阅Qt Concurrent模块文档以了解可用函数的概述,或者向下查看有关每个函数的详细信息。
类型文档
枚举类 QtConcurrent::FutureResult
此枚举类型用于调用QtConcurrent::QTaskBuilder::spawn(QtConcurrent::FutureResult)的特殊重载,它不返回未来对象。
常量 | 值 | 描述 |
---|---|---|
QtConcurrent::FutureResult::Ignore | 0 | 一个辅助标记,引入以提高代码可读性。 |
[别名]
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>的typedef。 它存储 ReduceOption值的OR组合。
函数文档
模板 <typename Sequence, typename KeepFunctor> void QtConcurrent::blockingFilter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则该项保留在 sequence 中;否则,该项将从 sequence 中移除。
请注意,此方法没有与迭代器一起工作的重载版本,因为它会使其操作的序列的迭代器无效。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅:并发过滤和过滤-归约。
模板 <typename Sequence, typename KeepFunctor> void QtConcurrent::blockingFilter(Sequence &sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction。如果 filterFunction 返回 true
,则该项保留在 sequence 中;否则,该项将从 sequence 中移除。
请注意,此方法没有与迭代器一起工作的重载版本,因为它会使其操作的序列的迭代器无效。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅:并发过滤和过滤-归约。
模板 <typename Sequence, typename KeepFunctor> std::decay_t<Sequence> QtConcurrent::blockingFiltered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅:filtered() 和 并发过滤和过滤-归约。
模板 <typename Sequence, typename KeepFunctor> std::decay_t<Sequence> QtConcurrent::blockingFiltered(Sequence &&sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction 并返回一个新的保留项的序列。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅:filtered() 和 并发过滤和过滤-归约。
模板 <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction)
从 begin 到 end 对每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅:filtered() 和 并发过滤和过滤-归约。
模板 <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(Iterator begin, Iterator end, KeepFunctor &&filterFunction)
对从begin到end的每个项目调用filterFunction一次,并返回新的保留项目序列。如果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))
对sequence中的每个项目调用filterFunction一次。所有对filterFunction的调用都是从QThreadPool pool取出的线程中调用的。如果filterFunction对于一个项目返回true
,那么该项目将传递给reduceFunction。换句话说,返回值是每个filterFunction返回true
的项目对应reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果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))
对sequence中的每个项目调用filterFunction一次。如果filterFunction对于一个项目返回true
,那么该项目将传递给reduceFunction。换句话说,返回值是每个filterFunction返回true
的项目对应reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列顺序调用reduceFunction。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅filteredReduced()和并发过滤器和过滤-归约。
模板 <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))
对于sequence中的每个项目,都会调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。当函数被调用时,结果值被初始化为initialValue,并首先对此值执行reduceFunction调用。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果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))
对于sequence中的每个项目,调用一次filterFunction。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。当函数被调用时,结果值被初始化为initialValue,并首先对此值执行reduceFunction调用。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果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))
从begin到end从每个项目调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果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))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅filteredReduced()和并发过滤器和过滤-归约。
模板 <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))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。所有对 filterFunction 的调用都是从 QThreadPool pool 所获取的线程中调用的。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅filteredReduced()和并发过滤器和过滤-归约。
模板 <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))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅filteredReduced()和并发过滤器和过滤-归约。
模板 <typename Sequence, typename MapFunctor> void QtConcurrent::blockingMap(QThreadPool *pool, Sequence &&sequence, MapFunctor function)
对于 sequence 中的每个项目,调用一次 function。所有对 function 的调用都是从 QThreadPool pool 所获取的线程中调用的。该 function 会接收项目的一个引用,所以对项目所做的任何修改都会出现在 sequence 中。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅 map() 和 并发映射和映射-归约。
模板 <typename Sequence, typename MapFunctor> void QtConcurrent::blockingMap(Sequence &&sequence, MapFunctor &&function)
对于 sequence 中的每个项目,调用一次 function。该 function 会接收项目的一个引用,所以对项目所做的任何修改都会出现在 sequence 中。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅 map() 和 并发映射和映射-归约。
模板 <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅 map() 和 并发映射和映射-归约。
模板 <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅 map() 和 并发映射和映射-归约。
模板 <typename OutputSequence, typename InputSequence, typename MapFunctor> OutputSequence QtConcurrent::blockingMapped(QThreadPool *pool, InputSequence &&sequence, MapFunctor &&function)
对sequence中的每个项目调用一次function,并返回一个包含结果的OutputSequence。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。结果的类型将与MapFunctor返回的类型匹配。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <typename OutputSequence, typename InputSequence, typename MapFunctor> OutputSequence QtConcurrent::blockingMapped(InputSequence &&sequence, MapFunctor &&function)
对sequence中的每个项目调用一次function,并返回一个包含结果的OutputSequence。结果的类型将与MapFunctor返回的类型匹配。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <typename Sequence, typename Iterator, typename MapFunctor> Sequence QtConcurrent::blockingMapped(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function,并返回包含结果的一个容器。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。您可以通过模板参数指定容器的类型,如下所示
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <typename Sequence, typename Iterator, typename MapFunctor> Sequence QtConcurrent::blockingMapped(Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function,并返回一个包含结果的一个容器。您可以通过模板参数指定容器的类型,如下所示
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <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))
为 sequence 中的每个项目调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 启动的线程中进行。将每个 mapFunction 的返回值传递给 reduceFunction。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor> ResultType QtConcurrent::blockingMappedReduced(Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
为 sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <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))
为 sequence 中的每个项目调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 启动的线程中进行。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValue,reduceFunction 的第一次调用将操作此值。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <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))
为 sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValue,reduceFunction 的第一次调用将操作此值。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
注意:此函数将阻塞,直到处理序列中的所有项。
另请参阅mapped() 和 Concurrent Map and Map-Reduce.
模板 <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))
对从 begin 到 end 的每个元素调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 的线程中发出。每个 mapFunction 的返回值都传递给 reduceFunction。
需要注意的是,尽管 mapFunction 是并发调用的,但每次只有一个线程会调用 reduceFunction。调用 reduceFunction 的顺序是不确定的。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅blockingMappedReduced() 和 并发映射与映射-归约。
模板 <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))
对从 begin 到 end 的每个元素调用一次 mapFunction。每个 mapFunction 的返回值都传递给 reduceFunction。
需要注意的是,尽管 mapFunction 是并发调用的,但每次只有一个线程会调用 reduceFunction。调用 reduceFunction 的顺序是不确定的。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅blockingMappedReduced() 和 并发映射与映射-归约。
模板 <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))
对从 begin 到 end 的每个元素调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 的线程中发出。每个 mapFunction 的返回值都传递给 reduceFunction。当调用函数时,结果值初始化为 initialValue,并且第一次调用 reduceFunction将对这个值进行操作。
需要注意的是,尽管 mapFunction 是并发调用的,但每次只有一个线程会调用 reduceFunction。调用 reduceFunction 的顺序是不确定的。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅blockingMappedReduced() 和 并发映射与映射-归约。
模板 <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))
对从 begin 到 end 的每个元素调用一次 mapFunction。每个 mapFunction 的返回值都传递给 reduceFunction。当调用函数时,结果值初始化为 initialValue,并且第一次调用 reduceFunction将对这个值进行操作。
需要注意的是,尽管 mapFunction 是并发调用的,但每次只有一个线程会调用 reduceFunction。调用 reduceFunction 的顺序是不确定的。
注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。
另请参阅blockingMappedReduced() 和 并发映射与映射-归约。
模板 <typename Sequence, typename KeepFunctor> QFuture<void> QtConcurrent::filter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则该项保留在 sequence 中;否则,该项将从 sequence 中移除。
请注意,此方法没有与迭代器一起工作的重载版本,因为它会使其操作的序列的迭代器无效。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<void> QtConcurrent::filter(Sequence &sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction。如果 filterFunction 返回 true
,则该项保留在 sequence 中;否则,该项将从 sequence 中移除。
请注意,此方法没有与迭代器一起工作的重载版本,因为它会使其操作的序列的迭代器无效。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<typename std::decay_t<Sequence>::value_type> QtConcurrent::filtered(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<typename std::decay_t<Sequence>::value_type> QtConcurrent::filtered(Sequence &&sequence, KeepFunctor &&filterFunction)
对 sequence 中的每个项调用一次 filterFunction 并返回一个新的保留项的序列。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<typename qValueType<Iterator>::value_type> QtConcurrent::filtered(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction)
从 begin 到 end 对每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true
,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<typename qValueType<Iterator>::value_type> QtConcurrent::filtered(Iterator begin, Iterator end, KeepFunctor &&filterFunction)
对从begin到end的每个项目调用filterFunction一次,并返回新的保留项目序列。如果filterFunction返回true
,则在新序列中放置该项目的一个副本。否则,该项目将不会出现在新序列中。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对sequence中的每个项目调用filterFunction一次。所有对filterFunction的调用都是从QThreadPool pool取出的线程中调用的。如果filterFunction对于一个项目返回true
,那么该项目将传递给reduceFunction。换句话说,返回值是每个filterFunction返回true
的项目对应reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对sequence中的每个项目调用filterFunction一次。如果filterFunction对于一个项目返回true
,那么该项目将传递给reduceFunction。换句话说,返回值是每个filterFunction返回true
的项目对应reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced(QThreadPool *pool, Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对于sequence中的每个项目,都会调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。当函数被调用时,结果值被初始化为initialValue,并首先对此值执行reduceFunction调用。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced<typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType>(Sequence &&sequence, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对于sequence中的每个项目,调用一次filterFunction。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。当函数被调用时,结果值被初始化为initialValue,并首先对此值执行reduceFunction调用。
请注意,虽然filterFunction是并发调用的,但一次只有一个线程调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced<typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
从begin到end从每个项目调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true
,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true
的每个项目的reduceFunction的结果。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced<typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced<typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType>(QThreadPool *pool, Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。所有对 filterFunction 的调用都是从 QThreadPool pool 所获取的线程中调用的。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<ResultType> QtConcurrent::filteredReduced<typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor, typename InitialValueType>(Iterator begin, Iterator end, KeepFunctor &&filterFunction, ReduceFunctor &&reduceFunction, InitialValueType &&initialValue, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
对于从 begin 到 end 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true
,则该项目随后传递给 reduceFunction。换句话说,返回值是从 begin 到 end 的每个项目对 reduceFunction 返回 true
的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。
请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptions是QtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptions是QtConcurrent::OrderedReduce,则按照原始序列的顺序调用reduceFunction。
另请参阅:并发过滤和过滤-归约。
模板 QFuture<void> QtConcurrent::map<typename Sequence, typename MapFunctor>(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function)
对于 sequence 中的每个项目,调用一次 function。所有对 function 的调用都是从 QThreadPool pool 所获取的线程中调用的。该 function 会接收项目的一个引用,所以对项目所做的任何修改都会出现在 sequence 中。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<void> QtConcurrent::map<typename Sequence, typename MapFunctor>(Sequence &&sequence, MapFunctor &&function)
对于 sequence 中的每个项目,调用一次 function。该 function 会接收项目的一个引用,所以对项目所做的任何修改都会出现在 sequence 中。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<void> QtConcurrent::map<typename Iterator, typename MapFunctor>(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<void> QtConcurrent::map<typename Iterator, typename MapFunctor>(Iterator begin, Iterator end, MapFunctor &&function)
对从begin到end的每个项目调用一次function。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<QtPrivate::MapResultType<Sequence, MapFunctor>> QtConcurrent::mapped<typename Sequence, typename MapFunctor>(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function)
为 sequence 中的每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。所有对 function 的调用都从来自 QThreadPool pool 的线程中执行。您可以使用 QFuture::const_iterator 或 QFutureIterator 遍历结果。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<QtPrivate::MapResultType<Sequence, MapFunctor>> QtConcurrent::mapped<typename Sequence, typename MapFunctor>(Sequence &&sequence, MapFunctor &&function)
为 sequence 中的每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。您可以使用 QFuture::const_iterator 或 QFutureIterator 遍历结果。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> QtConcurrent::mapped<typename Iterator, typename MapFunctor>(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)
从 begin 到 end 对每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。所有对 function 的调用都从来自 QThreadPool pool 的线程中执行。您可以使用 QFuture::const_iterator 或 QFutureIterator 遍历结果。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> QtConcurrent::mapped<typename Iterator, typename MapFunctor>(Iterator begin, Iterator end, MapFunctor &&function)
从 begin 到 end 对每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。您可以使用 QFuture::const_iterator 或 QFutureIterator 遍历结果。
另请参阅并发 Map 和 Map-Reduce.
模板 QFuture<ResultType> QtConcurrent::mappedReduced<typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>(QThreadPool *pool, Sequence &&sequence, MapFunctor &&mapFunction, ReduceFunctor &&reduceFunction, QtConcurrent::ReduceOptions reduceOptions = ReduceOptions(UnorderedReduce | SequentialReduce))
为 sequence 中的每个项目调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 启动的线程中进行。将每个 mapFunction 的返回值传递给 reduceFunction。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
另请参阅并发 Map 和 Map-Reduce.
为 sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
另请参阅并发 Map 和 Map-Reduce.
为 sequence 中的每个项目调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 启动的线程中进行。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValue,reduceFunction 的第一次调用将操作此值。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
另请参阅并发 Map 和 Map-Reduce.
为 sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValue,reduceFunction 的第一次调用将操作此值。
注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunction。reduceFunction 被调用的顺序由 reduceOptions 决定。
另请参阅并发 Map 和 Map-Reduce.
对从 begin 到 end 的每个元素调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 的线程中发出。每个 mapFunction 的返回值都传递给 reduceFunction。
注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。
注意: QtConcurrent::OrderedReduce 导致有序归约。
另请参阅并发 Map 和 Map-Reduce.
对从 begin 到 end 的每个元素调用一次 mapFunction。每个 mapFunction 的返回值都传递给 reduceFunction。
注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。
注意: QtConcurrent::OrderedReduce 导致有序归约。
另请参阅并发 Map 和 Map-Reduce.
对从 begin 到 end 的每个元素调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 的线程中发出。每个 mapFunction 的返回值都传递给 reduceFunction。当调用函数时,结果值初始化为 initialValue,并且第一次调用 reduceFunction将对这个值进行操作。
注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。
注意: QtConcurrent::OrderedReduce 导致有序归约。
另请参阅并发 Map 和 Map-Reduce.
模板 <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))
对从 begin 到 end 的每个元素调用一次 mapFunction。每个 mapFunction 的返回值都传递给 reduceFunction。当调用函数时,结果值初始化为 initialValue,并且第一次调用 reduceFunction将对这个值进行操作。
注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。
注意: QtConcurrent::OrderedReduce 导致有序归约。
另请参阅并发 Map 和 Map-Reduce.
模板 <typename T> QFuture<T> QtConcurrent::run(Function function, ...)
相当于
QtConcurrent::run(QThreadPool::globalInstance(), function, ...);
在单独的线程中运行function。线程来自全局 QThreadPool。请注意,function可能不会立即运行;function只会在线程可用时运行。
在基本模式下,T与function的返回值类型相同。可以通过QFuture::result()函数访问非空返回值。
在基本模式下,返回的QFuture只能用于查询函数的运行/完成状态和返回值。特别是,只有在未来的计算尚未开始时,才能发出取消或暂停的请求。
在使用承诺模式中,期望function返回void,并且必须在函数的参数列表中放置一个额外的QPromise<T>类型参数,作为第一个参数。T是结果类型,对于返回的QFuture<T>也是相同的。
在使用承诺模式中,类似于基本模式,返回的QFuture可以用于查询运行/完成状态和函数报告的值。此外,它可以用于挂起或取消运行的任务,从调用的function获取多个结果或监视function报告的进度。
另请参阅并发运行(基本模式),使用承诺的并发运行,以及QThreadPool::start。
模板 <typename T> QFuture<T> QtConcurrent::run(QThreadPool *pool, Function function, ...)
在pool上安排function。请注意,function可能不会立即运行;function只会在线程可用时运行。
在基本模式下,T与function的返回值类型相同。可以通过QFuture::result()函数访问非空返回值。
在基本模式下,返回的QFuture只能用于查询函数的运行/完成状态和返回值。特别是,只有在未来的计算尚未开始时,才能发出取消或暂停的请求。
在使用承诺模式中,期望function返回void,并且必须在函数的参数列表中放置一个额外的QPromise<T>类型参数,作为第一个参数。T是结果类型,对于返回的QFuture<T>也是相同的。
在使用承诺模式中,类似于基本模式,返回的QFuture可以用于查询运行/完成状态和函数报告的值。此外,它可以用于挂起或取消运行的任务,从调用的function获取多个结果或监视function报告的进度。
另请参阅并发运行(基本模式),使用承诺的并发运行,以及QThreadPool::start。
[since 6.0]
模板 <typename Task> QtConcurrent::QTaskBuilder<Task> QtConcurrent::task(Task &&task)
创建一个QtConcurrent::QTaskBuilder的实例。该对象可用于调整一些参数并在单独的线程中运行task。
此功能是在Qt 6.0中引入的。
© 2024 Qt公司有限錫。本文件中包含的贡献文档均属于其各自所有者的版权。本提供的文档根据由自由软件基金会发布的GNU自由文档许可协议版本1.3许可。Qt及其相关标志是Qt公司在芬兰和/或其他国家的商标。《Qt公司》和相应标志是芬兰和/或其他国家《Qt公司》的商标。所有其他商标均为其各自所有者的财产。