Applying Unix Readiness Model for Concurrent Operations in C++
summary
Claims that the Unix readiness model (select/poll/epoll/kqueue) generalizes to arbitrary concurrent C++ operations and can be implemented in userspace. Uses non-blocking sockets, Unix domain sockets and signalfd, an epoll-based readiness set, intrusive link lists and a C++ Select class to compose futures/awaitables as readiness producers. Builds a happy‑eyeballs style connector and an in‑memory pipe/channel with cancellation via an output FD; demos connect to microsoft.com and the approach works, eliminating busy‑waiting and enabling clean cancellation.
AI-written summary · about
chapters (13)
- 0:00Introduction
- 3:14Unix readiness model
- 15:59Web browser connections example
- 23:04Demo: select connection
- 27:40Cancellation in connections
- 30:52Pure C++ implementation
- 34:45Pipes in C++ model
- 39:48Non-blocking pipe in C++
- 43:41Select object design
- 57:10Eliminating busy waiting
- 59:39Buffers and real-world use
- 1:00:00Senders and receivers
- 1:04:56Key takeaways
related talks
01h 01mWhat I learned from sockets
01h 08mThinking Outside the Synchronisation Quadrant
01h 08mBetter Code: Concurrency
57mStructured Networking in C++
54mDesigning for Concurrency Using Message Passing in C++
47mConcurrent Programming in C++
01h 07mThe C++20 Synchronization Library
50mC++ Parallel Programming Models
