Libco

协程基础库
授权协议 Apache
开发语言 C/C++
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 白文彬
操作系统 Linux
开源组织 腾讯
适用人群 未知
 软件概览

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里面执行,那你所有的同步代码立即自动切换为异步调用~

  • Libco Libco is a c/c++ coroutine library that is widely used in WeChat services. It has been running on tens of thousands of machines since 2013. By linking with libco, you can easily transform synchr

  • 呼,整个libco库终于快是要剖析完了。整个人算是对协程以及操作系统的调度有了新的认识。 协程的阻塞和线程的阻塞 之前的博客,我们分析了libco的协程从创建到启动,挂起以及最后退出的一个过程。同时,我们也认识到,协程本质的执行是串行的。 在之前协程的安装与使用中,我们提到了一个生产者消费者例子。在producer协程函数中,最后会调用poll函数等待一秒,comsumer函数也会调用co_con

 相关资料
  • HTTPS(基于安全套接字层的超文本传输协议)或HTTP over SSL是由Netscape开发的Web协议。它不是协议,但它只是在SSL/TLS(安全套接字层/传输层安全性)之上分层HTTP的结果。 简而言之,HTTPS = HTTP + SSL 什么时候需要HTTPS? 当我们浏览时,通常使用HTTP协议发送和接收信息。因此,这很容易被其他人窃听我们的计算机和Web服务器之间的对话。很多时候

  • 主要内容:1. HTTP协议,2. 基本功能,3. 架构,4. Http协议详细信息理解协议对于掌握安全测试非常重要。当我们拦截网络服务器和客户端之间的数据包数据时,您将能够理解协议的重要性。 1. HTTP协议 超文本传输协议(HTTP)是用于分布式协作超媒体信息系统的应用程序级协议。它是自1990年以来万维网数据通信的基础。HTTP是一种通用的无状态协议,可以用于其他目的,也可以使用其请求方法,错误代码和标头的扩展。 基本上,HTTP是基于TCP/IP的通信协议,用于通过We

  • 本文向大家介绍Lua编程示例(七):协同程序基础逻辑,包括了Lua编程示例(七):协同程序基础逻辑的使用技巧和注意事项,需要的朋友参考一下 输出结果:

  • 第一章 进程基础 作为本书的第一部分,主要介绍进程的PID、进程状态、退出码和POSIX等基础概念。 网络有很多零散的资料介绍基础了,为什么还要花篇幅介绍这些呢?首先我们要保证看过这些章节的都能掌握这些概念,其次通过编写代码实例,我们还能动手验证这些概念,已经不能更赞了。 学习完这章我们应该能够准确回答出PID、PPID、进程名字、进程参数、进程状态、退出码、死锁、活锁、POSIX、Nohup等概

  • 一个Gradle工程是通过名字叫 build.gradle 的文件描述其构建过程的,该文字位于工程的根目录下。