Back To Schedule

Embedded Asynchronous Abstraction

Implementing Senders & Receivers Without an OS

09:00 - 10:30 Friday 3rd May 2024 MT Flug Auditorium
Intermediate
Advanced
Embedded

You've probably heard about senders and receivers. They're this new (actually old, but new to C++) abstraction for asynchronous work. People who work on them tend to be concerned with large-scale heterogeneous computing: parallel algorithms for doing "AI" and such.

But if you're working in embedded or constrained systems, and you want abstraction, what do you do? You have concurrency problems in spades since you're basically event-driven by interrupts happening whenever. Can you use senders and receivers make this situation amenable to reason with zero abstraction cost?

This talk answers that question, and more. We'll talk about the nitty-gritty of how senders & receivers work, and specifically about a partial implementation of P2300 targeting embedded microcontrollers. What's good about the current paper, and where is it lacking? Just what the heck are these things, and can we understand an implementation without drowning in abstract C++ noise? Can we express concurrent behaviour safely on systems without exceptions, allocation, or half the library that standardization takes for granted?

Let's find out.

View Slides

Ben Deane

Intel

Ben has been programming in C++ for this whole millennium. He spent just over 20 years in the games industry working for companies like EA and Blizzard; many of the games he worked on used to be fondly remembered but now he’s accepted that they are probably mostly forgotten. After getting more interested in modern C++, in the teens he started giving internal company talks and then talks at various conferences, spreading ideas about types, algorithms and declarative and functional techniques.

In 2018 he left the games industry and worked in finance for a short spell, writing high-frequency trading platforms using the most modern C++ that compilers could support. Now he is a Principal Engineer at Intel where he puts monads inside your CPU.