开销会大一些,不会大太多,主要还是因为context是存在heap上的,需要动态分配内存。lambda还是在stack上的。
主要还是为了代码可读性,大家写异步代码的时候总还是希望逻辑连贯的,别是是现在异步调用越来越多。
f()
{
# logic 1
# wait 1
# logic 2
# wait 2
}
以往自己写callback的时候,需要自己管理各种context,现在只要管一个coroutine handler就可以了。
【 在 hgoldfish 的大作中提到: 】
: 其实不会。不存在开销大得多这种说法。
: c++20 实现的 stackless coroutine. 相当于在生成函数的时候,额外传入个 context 作为参数而已。和 lambda capture 变量是一样的啊。
:
--
FROM 115.193.214.*