我目前正在经常分配新的协程实例(请参阅我的回答here中的代码)。
这的开销并非微不足道。
我猜想有一些方法可以通过重复使用之前分配的协程来降低价格吗?
不知道怎么做到这一点?
我可以使用boost :: pool作为协程Allocator
。但是,这对StackAllocator
不起作用,这是一个昂贵的...... {/ p>
答案 0 :(得分:2)
协程包含一个堆栈和一个控制块(保留寄存器,放在堆栈的边缘)。 您无法重用协程本身,但您可以编写自己的堆栈分配器,预分配和缓存堆栈。 新创建的协程可以从缓存中重用已经分配的堆栈。