点评 腾讯 的 协程库 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的设计缺陷和不成熟的实现使其更像是实验性质的库,尽管有腾讯的名头,但技术上并不可靠。

➡️

继续阅读