协同程序 - 重用?

时间:2014-06-08 16:04:11

标签: c++ caching boost coroutine

我目前正在经常分配新的协程实例(请参阅我的回答here中的代码)。

这的开销并非微不足道。

我猜想有一些方法可以通过重复使用之前分配的协程来降低价格吗?

不知道怎么做到这一点?

我可以使用boost :: pool作为协程Allocator。但是,这对StackAllocator不起作用,这是一个昂贵的...... {/ p>

1 个答案:

答案 0 :(得分:2)

协程包含一个堆栈和一个控制块(保留寄存器,放在堆栈的边缘)。 您无法重用协程本身,但您可以编写自己的堆栈分配器,预分配和缓存堆栈。 新创建的协程可以从缓存中重用已经分配的堆栈。