Libco 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
Libco 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
Libco 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !

软件简介

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)

加载中
更多评论
发表了资讯
2016/10/30 00:00

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

libco是微信后台大规模使用的c/c++协程库,2013年至今稳定运行在微信后台的数万台机器上。libco在2013年的时候作为腾讯六大开源项目首次开源,最近做了一次较大的更新。libco支持后台敏捷的同步风格编程模式,同时提供系统的高并发能力。 libco支持的特性 支持CGI框架,轻松构建web服务(New); 支持gethostbyname、mysqlclient、ssl等常用第三库(New); 可选的共享栈模式,单机轻松接入千万连接(New); 完善简洁的协程编程接口: ...

11
119
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2018/04/14 20:32

libco之协程分析

代码来源 libco是微信网络框架svrkit/summer的协程库。在网络IO操作较多的服务下,协程能够帮助提高服务的并发。在进行网络io操作的时候,让出cpu,服务更多的请求。 重要的数据结构 更大的图,见https://drive.google.com/file/d/1hyxb-5kwo2ezX8iRj5wjh0dJNy5oZXjv/view?usp=sharing 协程上下文 上下文定义,实际上,在这里对于X86_64系统,定义了14个寄存器,关于应该保存的寄存器应该有多少,在这篇文章用户态调度要保存些什...

0
0
发表了博客
2018/02/22 22:55

libco协程原理简要分析

此文简要分析一下libco协程的关键原理。   在分析前,先简单过一些协程的概念,以免有新手误读了此篇文章。   协程是用户态执行单元,它的创建,执行,上下文切换,挂起,销毁都是在用户态中完成,对linux系统而言,其实协程和进程(注:在linux系统中,进程是拥有独立地址空间的线程)一样,都是CPU的执行单元,只是进程是站在操作系统的层面来看,操作系统帮我们实现了这一抽象概念,而协程是站在用户的应用程序层面来看,协...

0
0
发表了博客
2018/07/29 22:44

从 Protothreads 和 libco 看 C/C++ 实现的协程库

同步Synchronous,异步(Asynchronous),协程(coroutine) 同步的好处是逻辑流就是代码的控制流,易于编写。但是如果碰到阻塞请求,就会卡住,因此CPU利用率不高。当然操作系统可以进行进程/线程调度,但是又有一些上下文切换的开销。 异步的好处是当线程可以不用一直阻塞在IO请求上,返回的逻辑可以写在回调里。但是这样有两个问题,一个是逻辑流不等于控制流,coder需要去适应异步的思想;二是回调时也需要保证维持一些当初请求...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
64 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部