11

我想获得一个具有 MIT 许可证(或更宽松)的轻量级、便携式光纤库。Boost.Coroutine 不合格(不是轻量级的),Portable Coroutine Library 和 Kent C++CSP(都是 GPL)也不合格。

编辑:你能帮我找一个吗?:)

4

6 回答 6

9
  1. Libtask:麻省理工学院许可证
  2. Libconcurrency : LGPL(比 MIT 更严格,但它是一个函数库!)

两者都是为 C 编写的。

于 2009-08-24T10:46:26.173 回答
5

实际上,我过去曾在博客上写过这个。看一看!我希望它能回答你的问题。在其中,我介绍了许多库,我对那些对系统编程(异步 IO)有用的库特别感兴趣。

该报道中明显没有Boost.Coroutine,我将在这里讨论。Boost.Coroutine 在概念上可能被认为是“重量级”(就其类型族而言),但实现非常有效。真正的问题是 Boost.Coroutine 是不完整的,并且(最后我检查)远未完成。我花了一些时间尝试与作者一起解决它的非入门问题,因为我真的很期待将它与 Boost.Asio 结合使用(这是 Boost.Coroutine 的主要目标之一),但作者没有有时间将他的工作带到 Boost 正式审查阶段。

于 2009-11-07T09:52:14.397 回答
3

C 的实现列表

对于超轻量级“线程”,请查看维基百科文章底部的 Protothreads。

于 2009-08-18T08:27:28.037 回答
2

现在有了 Boost 许可证,您有两个更好的选择:

于 2017-01-17T14:21:55.737 回答
2

如果 Boost 看起来很重,有帮助的人已经将 Boost() 的相关部分提取fcontext为一个独立的库,例如deboost.context

于 2020-06-17T16:31:34.643 回答
1

有一个非常快速和轻量级的 C 非对称协程库 - libaco

它非常小,非常快并且非常节省内存:

除了实现生产就绪的 C 协程库外,这里还有一份详细的文档,介绍了如何实现最快和正确的协程库,并附有严格的数学证明;

它的 LOC 不超过 700 个,但具有您可能希望从协程库中获得的全部功能;

基准部分显示,在 AWS c5d.large 机器上,协程之间的一次上下文切换只需要大约 10 ns(对于独立堆栈的情况);

用户可以选择使用独立堆栈或共享堆栈(可以与其他人共享)创建一个新的协程;

它的内存效率极高:同时运行 10,000,000 个 co 只需要 2.8 GB 物理内存(使用 tcmalloc 运行,每个 co 具有 120B 复制堆栈大小配置)。

它也有非常详细的文档。

PS:

它遵循 Apache 许可证,版本 2.0。

于 2018-07-03T14:22:28.133 回答