Extensions for concurrency - cppreference.com (original) (raw)

Extensions for concurrency

The C++ Extensions for Concurrency, ISO/IEC TS 19571:2016, defines the following new components for the C++ standard library:

Contents

[edit] Continuations and other extensions for std::future

Defined in header <experimental/future>
future(concurrency TS) a version of std::future enhanced with continuations and other features (class template) [edit]
shared_future(concurrency TS) a version of std::shared_future enhanced with continuations and other features (class template) [edit]
promise(concurrency TS) a modified version of std::promise that uses std::experimental::future (class template)
packaged_task(concurrency TS) a modified version of std::packaged_task that uses std::experimental::future (class template)
when_all(concurrency TS) produces a future that becomes ready when all given futures or shared_futures are ready (function template) [edit]
when_any(concurrency TS) produces a future that becomes ready when at least one of the given futures or shared_futures is ready (function template) [edit]
make_ready_future(concurrency TS) produces a future that is ready immediately and holds the given value (function template) [edit]
make_exceptional_future(concurrency TS) produces a future that is ready immediately and holds the given exception (function template) [edit]

[edit] Feature test macros

Defined in header <experimental/future>
__cpp_lib_experimental_future_continuations a value of at least 201505 indicates that future::then and other extensions are supported (macro constant)
Defined in header <experimental/latch>
__cpp_lib_experimental_latch a value of at least 201505 indicates that the latch type is supported (macro constant)
Defined in header <experimental/barrier>
__cpp_lib_experimental_barrier a value of at least 201505 indicates that barrier type is supported (macro constant)
Defined in header <experimental/atomic>
__cpp_lib_experimental_atomic_smart_pointers a value of at least 201505 indicates that the atomic smart pointers are supported (macro constant)

[edit] Merged into C++20

The following components of the Concurrency TS have been adopted into the C++20 standard.

[edit] Latches and barriers

[edit] Atomic smart pointers

These class templates replace the shared_ptr atomic function overloads