你们太小看协程了。
协程自然是让异步编程变得更好看。还有更多的好处:
仅从语法角度看,协程避免了异步编程中到处乱飞的 closure, context 变量,可以非常有效地减少编程错误。让数据的生命周期变得简单明了。
对于 c/c++ 而言,还能额外获得效率的提升。协程代码一般局部性更强,分配变量时可以更多地分配在栈上面以减少内存复制开销,说不定带来更低的 cache miss. 如果有对协程特别支持的语言,还可以考虑协程运行过程中申请的内存都延迟到协程结束的时候释放,代替开销巨大的 gc 和 malloc/free.
介绍一下我的协程库:
https://qtng.org/【 在 winfredsu (winfredsu) 的大作中提到: 】
: L2 miss的没见过,协程优化LLC miss的工作17年开始在VLDB上出现过,原理大概和你说的一样,发一个prefetch之后就yield, 可以参考这篇文章:
https://infoscience.epfl.ch/record/231318: 这个方法对于几个GB的树结构访问情景,LLC miss概率较大,可以有明显收益;但是我感觉有两个问题:
: 1. 这种能“较好预测LLC miss”的场景是否有很多?基于DRAM的数据库是一个好场景,但是还有没有更普遍的?
: ...................
--
修改:hgoldfish FROM 110.81.41.*
FROM 112.47.122.*