Designing for C++ Concurrency Using Message Passing
summary
Message passing eliminates explicit locks and most data races by running each microservice as a single-threaded state machine; the talk shows concrete code patterns: an dining philosophers example with IO actor, timer actor and a chopstick-manager actor, and a robot actuator per-thread design with a coordinator, per-actuator actors and timer-driven deadlines. Frameworks used or recommended include ZeroMQ, the C++ Actor Framework and an in‑house Woven implementation; pitfalls covered are message ordering, message deadlock and dropped messages, and the approach proves practical and scalable in examples.
AI-written summary · about
chapters (36)
- 0:00Introduction
- 0:28Agenda
- 0:51Why Message Passing
- 2:16The Cost
- 4:23Potential Problems
- 7:42Message Passing Framework
- 9:58concurrency guarantees
- 13:14control delivery mechanism
- 15:22theory vs practice
- 16:39focus
- 17:54independent
- 18:51value types
- 20:09message handling
- 22:21State machines
- 24:08Dining philosophers
- 25:31Actors
- 26:25IO
- 27:04Timing
- 28:03philosophers
- 29:19code
- 30:24message
- 31:17eating
- 31:55timer expiry
- 32:34managing the chopsticks
- 34:02using chopsticks notify function
- 35:59robot control system
- 37:21central coordinator
- 38:00moving the robot
- 44:33waiting
- 47:15in code
- 50:04single thread
- 54:02focus on one task
- 54:41avoid overlap
- 55:31message types
- 56:11separate microservices
- 58:32single threaded state machine
related talks
54mDesigning for Concurrency Using Message Passing in C++
35mCommunicating Sequential Processes
01h 08mThinking Outside the Synchronisation Quadrant
01h 35mThinking Outside the Synchronisation Quadrant
59mAn Introduction to Multithreading in C++20
54mIntroduction to the Actor Model
47mConcurrent Programming in C++
39mLet's talk concurrency
