Executors for C++ - A Long Story ...
summary
Argument that executors become C++’s base building block for async work and yet the interface is still unsettled. Shows why std::async can block on future destructor so no concurrency, compares concrete implementations: thread per task, thread pool, serial, inline and loop executors, and demonstrates a real time priority executor built on a thread per task execution context. Surveys three proposals: Asio style with post/dispatch/defer and continuation tokens, a Google template concept that uses spawn vs std::function to avoid virtual call overhead, and an NVIDIA traits approach for bulk futures and parallel algorithms.
AI-written summary · about
chapters (22)
- 0:00Intro
- 0:42Motivation: async
- 3:00Async Problem
- 4:35Motivation: Pipelines
- 5:56Executor Requirements
- 6:20Original Executor Interface
- 7:21Default Executor
- 7:36Concrete Executors
- 11:08Mission Accomplished
- 11:46Abstract Base Class
- 15:34Data Concentrator
- 17:28ASIO
- 19:46Executors and Async Ops
- 21:27Customization Points
- 27:51Executors and Schedulers, R5
- 29:51Executor Traits
- 35:24Proposal Status
- 39:19Layers
- 44:38Coroutines
- 46:04Summary
- 50:51Questions
- 52:48Outlook
related talks
01h 03mDesigning a Unified Interface for Execution
01h 04mAtomics, Locks, and Tasks (part 2 of 2)
01h 08mBetter Code: Concurrency
59mAn Introduction to Multithreading in C++20
01h 24mConcurrency in C++20 and Beyond
01h 32mConcurrency, Parallelism and Coroutines
42mThe C++ Execution Model
01h 11mAsynchronous C++
