小编Vad*_*P22的帖子

是否可以在 C++ 中制作零分配协程运行时?

在 Rust 中,异步函数不需要在堆上分配。函数async返回编译器生成的结构,您可以在该结构上调用编译器生成的poll方法。异步的设计看起来逻辑清晰。

C++中协程的设计很奇怪。它迫使您在堆上进行分配,因为您没有其他方法可以使用co_return.

(可以创建一个自定义分配器来在堆栈上的缓冲区中进行分配,但这会使代码不必要地复杂化。)

为什么在 C++ 的设计中决定协程返回的对象必须有一个promise_type

为什么await_ready,,,await_suspendawait_resume不够?

(这看起来很奇怪,这就是强制你进行分配的原因;你不能直接构造一个SomeTask<T>对象(使用三个await_*方法)并返回它。)

我们如何在没有自定义分配器的情况下制作零分配协程?

c++ asynchronous language-design c++20 c++-coroutine

21
推荐指数
1
解决办法
1585
查看次数