Non-Confidential | ![]() | ARM 100073_0608_00_en | ||
| ||||
Home > The ARM C and C++ Libraries > Multithreaded support in ARM C++ libraries [ALPHA] > Standard library concurrency constructs [ALPHA] |
The C++ standard library, beginning with the C++11 standard, provides various high-level concurrency constructs. Presently, these constructs are spread across the headers <atomic>
, <chrono>
, <mutex>
, <shared_mutex>
, <condition_variable>
, <thread>
, and <future>
.
The following sections identify how the functionality of each of these headers maps to the ARM Compiler thread porting API introduced in 1.7.1 ARM C++ libraries and multithreading [ALPHA]. They also identify any additional dependencies or expected limitations.
The functionality of this header does not depend on the thread porting API.
The following table summarizes the level of support for the <atomic>
header on various ARM architectures.
Architecture | T (Template parameter) |
atomic<T> |
atomic<T*> |
---|---|---|---|
ARMv7A/R, ARMv8A/R | Any types | Supported | Supported |
ARMv7M, ARMv8M | Integral types (including <stdint.h> defined types) |
Supported | Supported |
ARMv7M, ARMv8M | Complex types | Unsupported | Supported |
ARMv6M | Any types | Unsupported | Unsupported |
None of the targets support the functions atomic_thread_fence()
and atomic_signal_fence()
.
This header requires a full implementation of the 1.7.2 Clocks [ALPHA] section of the thread porting API.
These headers require a full implementation of the 1.7.3 Mutexes [ALPHA] section of the thread porting API. In
addition, the time-related subset of constructs (for example,
std::timed_mutex
and
std::recursive_timed_mutex
) defined in these headers requires
an implementation of the 1.7.2 Clocks [ALPHA] section of the porting API.
This header requires a full implementation of the 1.7.4 Condition variables [ALPHA] section of the thread porting API. In addition, the time-related subset of constructs (for example, std::condition_variable::wait_for()
) defined in this header requires an implementation of the 1.7.2 Clocks [ALPHA] section of the porting API.
These headers require a full implementation of the 1.7.5 Threads [ALPHA] section of the thread porting API. In
addition, the time-related subset of constructs (for example,
std::thread::sleep_until()
and
std::future::wait_for()
) defined in these headers requires an
implementation of the 1.7.2 Clocks [ALPHA] section of the porting API.