协程基础库 Libco

Apache
C/C++
Linux
腾讯
2014-04-21
红薯

libco 是腾讯开源的一个有趣的协程基础库,仅有的几个函数接口  co_create/co_resume/co_yield  再配合 co_poll, 可以支持同步或者异步的写法,如线程库一样轻松,库里面提供了socket族函数的hook,

包含如下内容:

  1. pthread风格的coroutine接口封装

  2. 事件循环以及超时机制

  3. 基于glibc-2.17源码修改的一个swapcontext高性能汇编版本

  4. socket函数的coroutine hook,阻塞式的socket调用会直接切换为异步调用

适用场景:已有大量的同步调用网络库,例如HttpGet/Memcache_cli/..., 并基于这些函数实现了大量复杂的业务逻辑,它们跑在多进程或者多线程环境下,希望改造为异步服务

改造方法:在进程/线程内创建多个coroutine( 使用co_create ),每个routine内部enable_sys_hook, 业务逻辑代码移到routine里面执行,那你所有的同步代码立即自动切换为异步调用~

加载中

评论(0)

暂无评论

揭秘:微信如何用 libco 支撑8亿用户

libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco在2013年的时候作为腾讯六大开源项目首次开源,最近做了一次较大的更新。libco支持后台敏捷的同...

2016/10/30 07:39

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

【腾讯Bugly干货分享】揭秘:微信是如何用libco支撑8亿用户的

libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco在2013年的时候作为腾讯六大开源项目首次开源,我们最近做了一次较大的更新,同步更新在https...

2016/11/07 17:33
253
0
协程技术研究

先记住一句话,子程序是协程的一种特例。 ## Python yield Python 中的 yield 保存一个 generator 函数的状态,generator 是一个特殊类型的迭代器(iterator) ``` Python import time def c...

2016/11/24 18:59
137
0
Why c++ coroutine?Why libgo?

讲述C++协程的近况、设计与实现中的细节与决策

2018/05/23 13:13
5.9K
12
[工具资源] 《HelloGitHub》第 08 期

兴趣是最好的老师,《HelloGitHub》就是帮你找到兴趣!

2016/11/30 09:21
23
0
【源资讯 第02期】大大们相爱相杀:谷歌安全有速度,微软“硬件”开源,Apache Hive 性能好

【一周源资讯(2016.10.29-2016.10.4)】谷歌安全又有速度,微软“硬件”开源,Apache Hive 也不甘示弱:我引入内存计算,性能提升26倍

2016/11/04 18:37
3.2K
4
Coding and Paper Letter(四十)

资源整理。 1 Coding: 1.Tomislav Hengl撰写的非官方作者指南:Michael Gould•Wouter Gerritsma。 UnofficialGuide4Authors 2.R语言包rwrfhydro,社区贡献的工具箱,用于管理,分析和可视化...

2018/10/21 23:42
17
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部