V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cyhone
V2EX  ›  C

微信 libco 协程库源码分析

  •  
  •   cyhone · 2019-10-08 18:02:04 +08:00 · 4438 次点击
    这是一个创建于 1633 天前的主题,其中的信息可能已经有所发展或是发生改变。

    libco 是微信后台开发和使用的协程库,同时应该也是极少数的将 C/C++协程直接运用到如此大规模的生成环境中的案例了。

    性能上来说,号称可以调度千万级协程。 从使用上来说,不仅提供了一套类 pthread 的协程通信机制,同时可以零改造地将三方库的阻塞 IO 调用协程异步化。

    在另外一篇文章《云风 coroutine 协程库源码分析》中,我介绍了有栈协程的实现原理。

    而相比于 coroutine 协程库, libco 整体更成熟,性能更高,使用上也更加方面。主要体现在以下几个方面:

    1. 协程上下文切换性能更好
    2. 协程在 IO 阻塞时可自动切换,包括 gethostname、mysqlclient 等。
    3. 协程可以嵌套创建,即一个协程内部可以再创建一个协程。
    4. 提供了超时管理,以及一套类 pthread 的接口,用于协程间通信。

    本文将根据这几方面深入分析下 libco 的实现源码。

    在正式阅读本文之前,如果对有栈协程的实现原理不是特别了解的话,建议可以提前阅读另外一篇文章《云风 coroutine 协程库源码分析》

    同时,我也提供了libco 注释版,辅助大家理解 libco 的代码。

    点击查看原文

    5 条回复    2019-12-04 17:44:37 +08:00
    cyhone
        1
    cyhone  
    OP
       2019-10-08 19:06:02 +08:00
    原文链接: [微信 libco 协程库源码分析]( http://www.cyhone.com/articles/analysis-of-libco/)

    同时欢迎关注公众号:编程沉思录
    eastlhu
        2
    eastlhu  
       2019-10-08 21:32:08 +08:00
    感谢大佬,先 m 再看
    VDimos
        3
    VDimos  
       2019-10-08 22:18:40 +08:00 via Android
    学习了
    dzmcs
        4
    dzmcs  
       2019-10-09 12:36:50 +08:00
    感谢,mark,学习一下
    paoqi2048
        5
    paoqi2048  
       2019-12-04 17:44:37 +08:00
    学习了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3334 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:24 · PVG 21:24 · LAX 06:24 · JFK 09:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.