协程(三) 腾讯libco源码分析

原创 2016年08月30日 15:47:23

   腾讯的libco使用了hook技术,做到了在遇到阻塞IO时自动切换协程,(由事件循环co_eventloop检测的)阻塞IO完成时恢复协程,简化异步回调为相对同步方式的功能。其没有使用显示的调度器来管理所有协程(保存协程的相关数据),在协程切换及恢复之间主要依靠epoll_event.data.ptr来传递恢复协程所需的数据。

   笔者fork了腾讯的libco库,对hook系统调用和协程部分根据自己的理解添加了较详细的注释,注释主要集中在co_hook_sys_call. cpp、co_routine.cpp两个文件,源码分析请移步我的github

相关文章推荐

协程 及 Libco 介绍

libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程、如何实现协程、libco使用等方面了解协程和libco。   why协程 为什么使用协程,我们先从se...

微信后台 phxrpc (v0.8) 之 编译&&整体流程&&部分代码解析(一)

一.简介微信在2016年发布了一个RPC框架phxrpc,github地址是:phxrpc。号称微信后台很多地方都使用到了,看了下,代码总体来说比较简单,但是其中有一些很有意思的地方,后面慢慢讲。二....

C++开源协程库libco-原理与应用

  • 2017年11月15日 16:34
  • 175KB
  • 下载

C++开源协程库libco-原理与应用

  • 2017年04月01日 10:50
  • 471KB
  • 下载

腾讯libco实现原理分析

我们以example_echosvr.cpp为例子,这个例子的作用就是读取客户端的请求,然后按原样返回给客户端。在它的main函数里创建了proccnt进程,每个进程里有cnt个task。这里的pro...

libco 协程的理解

学习libco,做了一些代码解读,记录在此 1 线程上下文 线程上下文实际是一个协程栈,维护协程之间的执行序列 同一个线程中的所有协程,共用一个线程上下文 线程上下文在 第一次被使用到...

libco协程库上下文切换原理详解

念桥边红药,年年知为谁生 ​ —— 杨州慢 姜夔 缘起libco 协程库在单个线程中实现了多个协程的创建和切换。按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函...
  • lqt641
  • lqt641
  • 2017年06月15日 14:31
  • 705

协程 及 Libco 介绍

libco 是腾讯开源的一个协程库,主要应用于微信后台RPC框架,下面我们从为什么使用协程、如何实现协程、libco使用等方面了解协程和libco。   why协程 为什么使用协程,...

libco和tornado、协程和异步的一些理解

看了些libco的实现,感觉和tornado差不多,基本的思想还是在线程被阻塞的时候能够去做其他的事情,此时还是用epoll来调度挂起和恢复 从这点看协程依然是基于异步的,且是纯异步的,只是协程框架提...

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

本文来自于腾讯bugly开发者社区,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/58203cfcd149ba305c5ccf85 作者:Leiffy 导语ib...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:协程(三) 腾讯libco源码分析
举报原因:
原因补充:

(最多只允许输入30个字)