Extensions for parallelism

Technical specifications
Filesystem library (filesystem TS)
Library fundamentals (library fundamentals TS)
Library fundamentals 2 (library fundamentals TS v2)
Library fundamentals 3 (library fundamentals TS v3)
Extensions for parallelism (parallelism TS)
Extensions for parallelism 2 (parallelism TS v2)
Extensions for concurrency (concurrency TS)
Concepts (concepts TS)
Ranges (ranges TS)
Mathematical special functions (special functions TR)

The C++ Extensions for Parallelism, ISO/IEC TS 19570:2015 defines the following new components for the C++ standard library:


[edit] Execution policies

The parallelism TS describes three execution policies: sequential, parallel, and parallel+vector, and provides corresponding execution policy types and objects. Users may select an execution policy statically by invoking a parallel algorithm with the an execution policy object of the corresponding type, or dynamically by using the type-erasing execution_policy class.

Implementations may define additional execution policies as an extension. The semantics of parallel algorithms invoked with an execution policy object of implementation-defined type is implementation-defined.

Defined in header <experimental/execution_policy>
execution policy types
global execution policy objects
dynamic execution policy
test whether a class represents an execution policy
(class template)

[edit] Exception lists

Defined in header <experimental/exception_list>
exceptions raised during parallel executions

[edit] Parallelized versions of existing algorithms

The TS provides parallelized versions of the following 69 algorithms from <algorithm>, <numeric> and <memory>:

Standard library algorithms for which parallelized versions are provided

[edit] New algorithms

Defined in header <experimental/algorithm>
similar to std::for_each except returns void
(function template)
applies a function object to the first n elements of a sequence
(function template)
Defined in header <experimental/numeric>
(parallelism TS)
similar to std::accumulate, except out of order
(function template) [edit]
similar to std::partial_sum, excludes the ith input element from the ith sum
(function template)
similar to std::partial_sum, includes the ith input element in the ith sum
(function template)
(parallelism TS)
applies a functor, then reduces out of order
(function template) [edit]
applies a functor, then calculates exclusive scan
(function template)
applies a functor, then calculates inclusive scan
(function template)