<execution>

描述并行算法的执行策略。

语法

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

另请参阅

头文件引用
C++ 标准库中的线程安全
C++ 标准库参考