修正嵌套的 asio 协程内部启动的 ucoro 协程无法再调用 asio 协程的错误 #18
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ucoro 协程能调用 asio 协程的关键是, local_storage 绑定了一个 io_context 但是,在 asio 协程里,再次等待 ucoro 协程的时候,此时的 ucoro 协程却失去了 io_context
因此,这个嵌套在里面的 ucoro 就无法再调用 asio 的协程了。
解决的办法是把 executor 作为参数继续传下去,在 initiate_do_invoke_ucoro_awaitable 里面调用 ucoro 的 detach() 方法时,把 executor 传进去。