libco 是腾讯开源的一个有趣的协程基础库,仅有的几个函数接口 co_create/co_resume/co_yield 再配合 co_poll, 可以支持同步或者异步的写法,如线程库一样轻松,库里面提供了socket族函数的hook,
pthread风格的coroutine接口封装
事件循环以及超时机制
基于glibc-2.17源码修改的一个swapcontext高性能汇编版本
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
Mysql Redis
本文向大家介绍Lua编程示例(七):协同程序基础逻辑,包括了Lua编程示例(七):协同程序基础逻辑的使用技巧和注意事项,需要的朋友参考一下 输出结果:
第一章 进程基础 作为本书的第一部分,主要介绍进程的PID、进程状态、退出码和POSIX等基础概念。 网络有很多零散的资料介绍基础了,为什么还要花篇幅介绍这些呢?首先我们要保证看过这些章节的都能掌握这些概念,其次通过编写代码实例,我们还能动手验证这些概念,已经不能更赞了。 学习完这章我们应该能够准确回答出PID、PPID、进程名字、进程参数、进程状态、退出码、死锁、活锁、POSIX、Nohup等概
一个Gradle工程是通过名字叫 build.gradle 的文件描述其构建过程的,该文字位于工程的根目录下。