我想获得一个轻便的便携式光纤库,它具有MIT许可证(或更宽松)。 Boost.Coroutine不符合(不是轻量级),也没有Portable Coroutine Library和Kent C ++ CSP(都是GPL)。
编辑:你能帮我找一个吗? :)答案 0 :(得分:9)
两者都是为C编写的。
答案 1 :(得分:5)
我过去实际上是blogged。看一看!我希望它能回答你的问题。在其中,我介绍了许多库,我对那些对系统编程(异步IO)有用的内容特别感兴趣。
明显缺席的是Boost.Coroutine,我将在此讨论。 Boost.Coroutine在概念上可能被认为是“重量级”(就其类型族而言),但实现效率非常高。真正的问题是Boost.Coroutine是不完整的,并且(最后我检查过)远未完成。我花了一些时间尝试与作者通过非首发问题合作,因为我真的很期待将它与Boost.Asio一起使用(这是Boost.Coroutine的主要目标之一),但作者还没有有时间将他的工作带到Boost正式审查阶段。
答案 2 :(得分:3)
对于超轻量级“线程”,请查看维基百科文章底部的Protothreads。
答案 3 :(得分:1)
现在,您有两个更好的Boost许可选项:
答案 4 :(得分:1)
有一个快速而轻巧的C不对称协程库-libaco。
它非常小,非常快并且具有极高的内存效率:
伴随着生产就绪的C协程的实施 库,以下是有关如何实施 最快和正确的协程库,并且具有严格的 数学证明;
它的LOC不超过700,但具有完整的 协程库中可能需要的功能;
基准部分 显示仅上下文之间一次协程之间的切换 在AWS上花费大约10 ns(对于独立堆栈而言) c5d。大型机;
用户可以选择使用一个新的协程创建一个 独立堆栈或共享堆栈(可以与他人共享);
极高的存储效率:10,000,000的co 同时运行仅需花费2.8 GB物理内存( tcmalloc,每个公司都有一个120B的副本堆栈大小配置。
它也有非常详细的文档。
PS:
它受Apache许可,版本2.0。
答案 5 :(得分:1)
如果Boost看起来很繁重,那么乐于助人的人们已经将Boost(fcontext
)的相关部分提取为独立的库,例如deboost.context。