intel / cpp-baremetal-senders-and-receivers

An implementation of C++ "senders and receivers" async framework suitable for embedded platforms.
https://intel.github.io/cpp-baremetal-senders-and-receivers/
Boost Software License 1.0
180 stars 14 forks source link

C++ Bare Metal Senders and Receivers

Unit Tests

WARNING: Work in Progress!

This library is under active development. It is a work in progress and has not yet been proved in production. Proceed at your own risk.

Abstract

C++ Bare Metal Senders and Receivers is a C++ header-only library that partially implements P2300, the proposed C++ standard design for asynchronous computation.

This implementation is intended for use on bare metal microcontrollers and implements a subset of the standard design. P2300 does encourage implementations not to do any runtime allocation, and that is fine for bare metal. But some notable differences here from the standard proposal are:

In general, although the P2300 design allows mechanism-agnostic handling of concurrency, the main mechanism of concurrency targeted by this library is interrupts. A careful reading of [intro.multithread] is recommended to understand how the C++ memory model defines well-formed concurrent execution.

C++20 is required. The following compilers are supported:

See the full documentation.