41

libaco —— 一个极速的轻量级 C 非对称协程库

 5 years ago
source link: https://www.oschina.net/p/libaco?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

libaco - 一个极速的轻量级 C 非对称协程库。

10 ns /ctxsw +  一千万协程 并发仅耗内存  2.8GB + Github  Trending

下面是这个项目的简要介绍:

  • 除了一个生产级别的 C 协程库实现,还包含了一个详细的文档描述了如何实现一个 最快且正确 的协程库以及其 严格的数学证明

  • 核心实现不超过 700 行代码,包含了一个协程库应该有的全部功能;

  • 在 AWS c5d.large 机器上的性能测试结果指出,一次协程间上下文切换仅耗时 10 ns (独立执行栈);

  • 用户在创建新的协程时,可以选择其拥有一个独占的执行栈,或者是与其它任意数量的协程一起共享一个执行栈;

  • 拥有极致的内存使用效率: 一千万 个协程并发执行仅消耗  2.8GB 的物理内存( tcmalloc, 每一个协程使用 120B 的复制栈)。

上文中的"最快"指的是在满足 Sys V ABI Intel386 或者 AMD64 约束下最快的上下文切换实现。

原理示意图:

YVFnieQ.jpg!web

YfuaYvY.jpg!web

RJ3Yvy3.jpg!web

NF7zIzj.jpg!web


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK