Execution Policies
The standard defines three execution policies:
std::execution::sequenced_policystd::execution::parallel_policystd::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.
1 std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9...