A Mental Model for C++ Coroutine
10 months ago
- #Programming
- #Coroutines
- #C++
- C++ coroutine is a specification defining customization points for library writers, not a ready-to-use library or trait.
- Coroutines generalize functions by supporting suspend, resume, and destroy operations in addition to call and return.
- Example coroutine 'add' demonstrates suspending at 'co_await' and resuming after 'co_sleep(1)' completes.
- C++ coroutine's flexibility allows customization of operations like call, return, suspend, resume, and destroy.
- The 'promise_type' within the coroutine's return type (e.g., 'Task<T>') is key for customizing coroutine behavior.
- Awaiter and Awaitable concepts enable customization of suspend and resume operations, with 'await_suspend' and 'await_resume' methods.
- 'final_suspend' allows customization at the coroutine's end, often used to resume awaiting coroutines.
- 'await_transform' provides a way to transform expressions into awaitables, ensuring all awaitables are coroutines.