A Mental Model for C++ Coroutine
10 months ago
- #Programming
- #Coroutines
- #C++
- C++协程是为库作者定义定制点的规范,而非现成的库或特性。
- 协程通过支持挂起、恢复和销毁操作,泛化了仅支持调用和返回的函数概念。
- 示例协程'add'展示了在'co_await'处挂起,并在'co_sleep(1)'完成后恢复的过程。
- C++协程的灵活性允许定制调用、返回、挂起、恢复和销毁等操作。
- 协程返回类型(如'Task<T>')中的'promise_type'是定制协程行为的关键。
- Awaiter与Awaitable概念通过'await_suspend'和'await_resume'方法实现挂起/恢复操作的定制。
- 'final_suspend'支持在协程结束时定制行为,常用于恢复等待中的其他协程。
- 'await_transform'提供将表达式转换为可等待对象(awaitable)的机制,确保所有可等待对象均为协程。