协程——重用
Coroutine - Reuse?
我目前经常分配新的协程实例(请参阅我的回答中的代码)。
这个开销不是微不足道的。
我猜有一些方法可以通过重用以前分配的协程来降低成本?
不知道如何实现这一点?
我可以为协程Allocator
使用boost::池。然而,这将不适用于StackAllocator
,这是昂贵的…
协程包含一个堆栈和一个控制块(保留寄存器,放在堆栈的边缘)。您不能重用协程本身,但您可以编写自己的堆栈分配器来预分配和缓存堆栈。新创建的协程可以从缓存中重用已经分配的堆栈。
相关文章:
- 必须为 C++20 协程帧保留多少内存?
- C++ 协程在co_await表达式中临时
- C++20 协程:需要一个使用 co_yield 的函数
- 为什么协程的返回类型必须是可移动构造的?
- "co_yield"是否可以在恢复协程时从调用方返回值?
- 使用 lua 协程 API 和lua_close时出现分段错误
- 堆叠协程 + gdb = "previous frame inner to this frame (corrupt stack)?"
- 使用 GCC 10 进行简单协程泄漏
- C++协程:调用不带co_await的协程函数
- 如何在C++中从另一个协程调用协程?
- NRVO 是否也适用于协程?
- 是否必须使用无限循环来有效地重用协程句柄?
- ASIO - 如何停止基于简单协程的服务器?
- 在 C++20 中调试协程
- 防止一段代码在协程中并发执行
- 如何查看编译器生成的C++协程代码的代码
- C++20 中协程的机制是什么
- 为什么协程不允许使用占位符返回类型?
- Boost 协程由于对 callcc 的不明确调用而无法编译
- 协程——重用