点评 腾讯 的 协程库 libco
💡
原文中文,约3300字,阅读约需8分钟。
📝
内容提要
libco是腾讯开源的协程库,但存在设计缺陷,如干扰程序结构、强依赖调度器、使用过时的M:N模型及不支持标准C++用法。此外,上下文切换处理不当导致性能问题,整体上更像是“玩票”性质的库,受到不实崇拜。
🎯
关键要点
- libco是腾讯开源的协程库,但存在设计缺陷。
- 协程库不应干涉程序结构,libco的设计导致代码逻辑复杂。
- libco强依赖于调度器,限制了用户的灵活性。
- libco使用过时的M:N模型,增加了复杂性和心智负担。
- libco不支持标准C++用法,使用了C语言的缺陷。
- 上下文切换处理不当,导致性能问题和使用限制。
- 整体上,libco更像是一个“玩票”性质的库,受到不实崇拜。
❓
延伸问答
libco的主要缺陷是什么?
libco存在设计缺陷,如干扰程序结构、强依赖调度器、使用过时的M:N模型及不支持标准C++用法。
为什么libco不支持标准C++用法?
libco使用了C语言的缺陷,入口函数只能接受void*参数,未能学习标准C++库的接口。
libco的上下文切换处理有什么问题?
libco在上下文切换时切换了所有通用寄存器,但未切换状态寄存器和浮点寄存器,导致性能问题和使用限制。
libco与其他协程库相比有什么不足?
libco强依赖调度器,试图包办协程调度和异步IO,导致代码逻辑复杂,而其他库如云风的库则更为灵活。
M:N模型在libco中的应用有什么问题?
M:N模型增加了复杂性和心智负担,且由于调度点的存在,导致用户代码需要加锁和同步,降低了性能。
libco被认为是“玩票”性质的库的原因是什么?
libco的设计缺陷和不成熟的实现使其更像是实验性质的库,尽管有腾讯的名头,但技术上并不可靠。
➡️