Designing for Concurrency Using Message Passing in C++
summary
Argues that pushing all synchronization into a message-passing framework removes large classes of concurrency bugs and OS-level deadlocks, and recommends no shared mutable state and value-type messages. Demonstrates a concrete implementation: a dining-philosophers system with separate IO, timer and chopstick-manager microservices (chopstick manager enforces “two or none”), and a robot controller with a central coordinator, per-actuator controllers and timers. Uses in-process queues or network transports, assumes frameworks provide non-reentrancy guarantees; examples compile and the designs work as shown in the slides.
AI-written summary · about
chapters (10)
- 0:00Designing for Concurrency Using Message Passing Anthony Williams
- 10:44What is a Message Passing Framework?
- 16:53Delivery Mechanisms
- 23:15Value Types
- 24:44Avoid blocking
- 27:45Example: Dining Philosophers
- 31:17The Timing Actor
- 37:02The Server Actor: Chopstick Requests
- 40:30Example: A robot control system
- 43:25Actuator actors
related talks
01h 16mDesigning for C++ Concurrency Using Message Passing
35mCommunicating Sequential Processes
01h 35mThinking Outside the Synchronisation Quadrant
01h 08mThinking Outside the Synchronisation Quadrant
39mLet's talk concurrency
59mAn Introduction to Multithreading in C++20
01h 32mKeynote: Employing Senders & Receivers to Tame Concurrency in C++ Embedded Systems
01h 08mBetter Code: Concurrency
