描述并行算法的执行策略。
语法
namespace std {
template<class T> inline constexpr bool is_execution_policy_v = is_execution_policy<T>::value;
}
namespace std::execution {
inline constexpr sequenced_policy seq { unspecified };
inline constexpr parallel_policy par { unspecified };
inline constexpr parallel_unsequenced_policy par_unseq { unspecified };
}
类和结构
名称 | 描述 |
---|---|
is_execution_policy 结构 |
检测执行策略,将某些函数签名从其他不明确的重载解析参与中排除。 |
parallel_policy 类 |
用于消除并行算法重载的歧义。 指示并行算法的执行可以并行化。 |
parallel_unsequenced_policy 类 |
用作唯一的类型来消除并行算法重载的歧义。 指示并行算法的执行可以并行化和向量化。 |
sequenced_policy 类 |
用作唯一的类型来消除并行算法重载的歧义。 指定并行算法的执行不能并行化。 |
Microsoft 专用
并行算法在未指定的线程数上执行,并将工作划分为未指定的数据分区“区块”数量。Windows 线程池管理线程数。 实现尝试使用可用的逻辑处理器,这对应于可以同时执行的硬件线程数。
使用 parallel_policy
Windows 线程池指定或 parallel_unsequenced_policy
导致标准库算法并行运行。 并发线程数(因此数据分区的“区块”数量)限制为 500 个线程,因为这是线程池线程的默认数目。 有关详细信息,请参阅 线程池。
在 Windows 11 和 Windows Server 2022 之前,应用程序默认限制为最多具有 64 个逻辑处理器的单个处理器组。 这会将并发执行的线程数限制为 64。 有关详细信息,请参阅 处理器组。
从 Windows 11 和 Windows Server 2022 开始,进程及其线程具有处理器相关性,默认情况下跨系统中的所有处理器以及具有 64 个以上处理器的计算机上的多个组。 并发线程数的限制现在是系统中逻辑处理器的总数。
要求
标头:<execution>
命名空间:std