QtConcurrent命名空间

QtConcurrent命名空间提供高级API,使得可以编写无需使用底层线程原语的并发程序。更多...

头文件 #include <QtConcurrent>
CMakefind_package(Qt6 REQUIRED COMPONENTS Concurrent)
target_link_libraries(mytarget PRIVATE Qt6::Concurrent)
qmakeQT += concurrent

(since 6.0)QTaskBuilder

类型

enum classFutureResult { Ignore }
InvokeResultType
enumReduceOption { UnorderedReduce, OrderedReduce, SequentialReduce }
flagsReduceOptions

函数

voidblockingFilter(QThreadPool *pool, Sequence &sequence, KeepFunctor &&filterFunction)
voidblockingFilter(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(无序减少 | 顺序减少))
voidblockingMap(QThreadPool *pool,序列 &&sequence,映射函数 function)
voidblockingMap(序列 &&sequence,映射函数 &&function)
voidblockingMap(QThreadPool *pool,迭代器 begin,迭代器 end,映射函数 &&function)
voidblockingMap(迭代器 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(无序减少 | 顺序减少))
QFuturefilter(QThreadPool *pool,序列 sequence,保持函数 &&filterFunction)
QFuturefilter(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))
QFuturemap(QThreadPool *pool, Sequence &&sequence, MapFunctor &&function)
QFuturemap(Sequence &&sequence, MapFunctor &&and:function)
QFuturemap(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&orgeous:function)
QFuturemap(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模块文档以了解可用函数的概述,或者向下查看有关每个函数的详细信息。

class QTaskBuilder

QTaskBuilder类用于调整任务参数。更多...

类型文档

枚举类 QtConcurrent::FutureResult

此枚举类型用于调用QtConcurrent::QTaskBuilder::spawn(QtConcurrent::FutureResult)的特殊重载,它不返回未来对象。

常量描述
QtConcurrent::FutureResult::Ignore0一个辅助标记,引入以提高代码可读性。

[别名] 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::UnorderedReduce0x1以任意顺序进行归约。
QtConcurrent::OrderedReduce0x2按原始序列的顺序进行归约。
QtConcurrent::SequentialReduce0x4顺序归约:一次只有一个线程可以进入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)

beginend 对每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。

注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。

另请参阅:filtered() 和 并发过滤和过滤-归约

模板 <typename OutputSequence, typename Iterator, typename KeepFunctor> OutputSequence QtConcurrent::blockingFiltered(Iterator begin, Iterator end, KeepFunctor &&filterFunction)

对从beginend的每个项目调用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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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))

beginend从每个项目调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true的每个项目的reduceFunction的结果。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。所有对 filterFunction 的调用都是从 QThreadPool pool 所获取的线程中调用的。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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)

对从beginend的每个项目调用一次function。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。

注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。

另请参阅 map() 和 并发映射和映射-归约

模板 <typename Iterator, typename MapFunctor> void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunctor &&function)

对从beginend的每个项目调用一次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)

对从beginend的每个项目调用一次function,并返回包含结果的一个容器。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。您可以通过模板参数指定容器的类型,如下所示

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

注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。

另请参阅mapped() 和 Concurrent Map and Map-Reduce.

模板 <typename Sequence, typename Iterator, typename MapFunctor> Sequence QtConcurrent::blockingMapped(Iterator begin, Iterator end, MapFunctor &&function)

对从beginend的每个项目调用一次function,并返回一个包含结果的一个容器。您可以通过模板参数指定容器的类型,如下所示

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

注意:此函数将阻塞,直到迭代器到达正在处理的序列的末尾。

另请参阅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 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 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 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 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。当函数被调用时,结果值初始化为 initialValuereduceFunction 的第一次调用将操作此值。

注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 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。当函数被调用时,结果值初始化为 initialValuereduceFunction 的第一次调用将操作此值。

注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 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))

对从 beginend 的每个元素调用一次 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))

对从 beginend 的每个元素调用一次 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))

对从 beginend 的每个元素调用一次 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))

对从 beginend 的每个元素调用一次 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)

beginend 对每个项调用一次 filterFunction 并返回一个新的保留项的序列。所有对 filterFunction 的调用都从 QThreadPool pool 中获取的线程中发起。如果 filterFunction 返回 true,则将该项的副本放入新的序列中。否则,该项将不会出现在新的序列中。

另请参阅:并发过滤和过滤-归约

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

对从beginend的每个项目调用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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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。如果reduceOptionsQtConcurrent::UnorderedReduce,则调用reduceFunction的顺序是未指定的。如果reduceOptionsQtConcurrent::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))

beginend从每个项目调用一次filterFunction。所有对filterFunction的调用都来自从QThreadPool pool中获取的线程。如果filterFunction对一个项目返回true,则将该项目传递给reduceFunction。换句话说,返回值是filterFunction返回true的每个项目的reduceFunction的结果。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。所有对 filterFunction 的调用都是从 QThreadPool pool 所获取的线程中调用的。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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))

对于从 beginend 的每个项目,调用一次 filterFunction。如果 filterFunction 对于某个项目返回 true,则该项目随后传递给 reduceFunction。换句话说,返回值是从 beginend 的每个项目对 reduceFunction 返回 true 的结果。当函数被调用时,结果值初始化为 initialValue,然后 reduceFunction 的第一次调用将作用于该值。

请注意,虽然filterFunction是并发调用的,但每次只有一个线程会调用reduceFunction。如果reduceOptionsQtConcurrent::UnorderedReduce,那么reduceFunction调用的顺序是未定义的。如果reduceOptionsQtConcurrent::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)

对从beginend的每个项目调用一次function。所有对function的调用都是从QThreadPool pool中获取的线程中执行的。该function接收项目的引用,因此对项目的任何修改都会出现在迭代器所属的序列中。

另请参阅并发 Map 和 Map-Reduce.

模板 QFuture<void> QtConcurrent::map<typename Iterator, typename MapFunctor>(Iterator begin, Iterator end, MapFunctor &&function)

对从beginend的每个项目调用一次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_iteratorQFutureIterator 遍历结果。

另请参阅并发 Map 和 Map-Reduce.

模板 QFuture<QtPrivate::MapResultType<Sequence, MapFunctor>> QtConcurrent::mapped<typename Sequence, typename MapFunctor>(Sequence &&sequence, MapFunctor &&function)

sequence 中的每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。您可以使用 QFuture::const_iteratorQFutureIterator 遍历结果。

另请参阅并发 Map 和 Map-Reduce.

模板 QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> QtConcurrent::mapped<typename Iterator, typename MapFunctor>(QThreadPool *pool, Iterator begin, Iterator end, MapFunctor &&function)

beginend 对每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。所有对 function 的调用都从来自 QThreadPool pool 的线程中执行。您可以使用 QFuture::const_iteratorQFutureIterator 遍历结果。

另请参阅并发 Map 和 Map-Reduce.

模板 QFuture<QtPrivate::MapResultType<Iterator, MapFunctor>> QtConcurrent::mapped<typename Iterator, typename MapFunctor>(Iterator begin, Iterator end, MapFunctor &&function)

beginend 对每个项目调用一次 function,并返回一个未来实例,每个映射后的项目作为结果。您可以使用 QFuture::const_iteratorQFutureIterator 遍历结果。

另请参阅并发 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 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 reduceOptions 决定。

另请参阅并发 Map 和 Map-Reduce.

sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction

注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 reduceOptions 决定。

另请参阅并发 Map 和 Map-Reduce.

sequence 中的每个项目调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 启动的线程中进行。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValuereduceFunction 的第一次调用将操作此值。

注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 reduceOptions 决定。

另请参阅并发 Map 和 Map-Reduce.

sequence 中的每个项目调用一次 mapFunction。将每个 mapFunction 的返回值传递给 reduceFunction。当函数被调用时,结果值初始化为 initialValuereduceFunction 的第一次调用将操作此值。

注意,虽然 mapFunction 是并发调用的,但一次只有一个线程会调用 reduceFunctionreduceFunction 被调用的顺序由 reduceOptions 决定。

另请参阅并发 Map 和 Map-Reduce.

对从 beginend 的每个元素调用一次 mapFunction。所有对 mapFunction 的调用都从 QThreadPool pool 的线程中发出。每个 mapFunction 的返回值都传递给 reduceFunction

注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。

注意: QtConcurrent::OrderedReduce 导致有序归约。

另请参阅并发 Map 和 Map-Reduce.

对从 beginend 的每个元素调用一次 mapFunction。每个 mapFunction 的返回值都传递给 reduceFunction

注意,尽管mapFunction 被并发调用,但一次只有一个线程会调用reduceFunction。默认情况下,调用reduceFunction 的顺序是未定义的。

注意: QtConcurrent::OrderedReduce 导致有序归约。

另请参阅并发 Map 和 Map-Reduce.

对从 beginend 的每个元素调用一次 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))

对从 beginend 的每个元素调用一次 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中引入的。

另请参阅并发任务QtConcurrent::QTaskBuilder

© 2024 Qt公司有限錫。本文件中包含的贡献文档均属于其各自所有者的版权。本提供的文档根据由自由软件基金会发布的GNU自由文档许可协议版本1.3许可。Qt及其相关标志是Qt公司在芬兰和/或其他国家的商标。《Qt公司》和相应标志是芬兰和/或其他国家《Qt公司》的商标。所有其他商标均为其各自所有者的财产。