文件名称:协程基础库Libco.zip
文件大小:42KB
文件格式:ZIP
更新时间:2022-08-08 01:14:07
开源项目
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-master
----co.mk(2KB)
----co_routine_specific.h(2KB)
----co_routine.h(2KB)
----example_specific.cpp(2KB)
----example_thread.cpp(1KB)
----LICENSE.txt(19KB)
----example_setenv.cpp(2KB)
----co_closure.h(3KB)
----example_echosvr.cpp(5KB)
----example_copystack.cpp(2KB)
----example_poll.cpp(4KB)
----example_cond.cpp(2KB)
----co_routine.cpp(23KB)
----co_routine_inner.h(2KB)
----example_echocli.cpp(4KB)
----co_epoll.h(2KB)
----README.md(55B)
----Makefile(2KB)
----coctx.cpp(3KB)
----coctx_swap.S(2KB)
----example_closure.cpp(2KB)
----co_hook_sys_call.cpp(22KB)
----co_epoll.cpp(6KB)
----coctx.h(1KB)
----.gitignore(5B)