CppCoroutines
CppCoroutines copied to clipboard
eager start调度协程和resume时机的问题
一.
在initial_suspend挂起点DispatchAwaiter 是eager start
如果在DispatchAwaiter分发到另一个线程启动会遇到问题
比如主线程创建{ Task
二.
如果是这样 { Task
- call promise.return_value(expr)
- destroys all variables with automatic storage duration in reverse order they were created.
- call promise.final_suspend()
在1. 里面激活条件变量主线程task.get_result被唤醒,然后析构task 从而h.destroy(),而调度器的线程的协程可能在做2和3,这里核心问题应该和第一点一样,h.destroy()调用时机必须是挂起状态 这种情况是应该在final_suspend搞个final_awaiter然后在这个awaiter里面做相关逻辑吗