Execution Policies
The standard defines three execution policies:
std::execution::sequenced_policy
std::execution::parallel_policy
std::execution::parallel_unsequenced_policy
The corresponding policy tag specifies whether a program should run sequentially, in parallel, or parallel with vectorisation.
-
std::execution::seq
: runs the program sequentially -
std::execution::par
: runs the program in parallel on multiple threads -
std::execution::par_unseq
: runs the program in parallel on multiple threads and allows the interleaving of individual loops; permits a vectorised version with SIMD (Single Instruction Multiple Data) extensions.
The usage of the execution policy std::execution::par
or std::execution::par_unseq
allows the algorithm to run parallel or parallel and vectorised. This policy is a permission and not a requirement.
The following code snippet applies all execution policies.