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

微信 libco 协程库源码分析

  •  
  •   cyhone · 61 天前 · 2028 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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
        1
    cyhone   60 天前
    原文链接: [微信 libco 协程库源码分析]( http://www.cyhone.com/articles/analysis-of-libco/)

    同时欢迎关注公众号:编程沉思录
        2
    eastlhu   60 天前
    感谢大佬,先 m 再看
        3
    VDimos   60 天前 via Android
    学习了
        4
    dzmcs   60 天前
    感谢,mark,学习一下
        5
    paoqi2048   4 天前
    学习了
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2257 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 10:33 · PVG 18:33 · LAX 02:33 · JFK 05:33
    ♥ Do have faith in what you're doing.