轻巧,便携的C ++光纤,MIT许可证

时间:2009-08-17 00:12:41

标签: c++ licensing portability fiber

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

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

6 个答案:

答案 0 :(得分:9)

  1. Libtask:麻省理工学院执照
  2. Libconcurrency:LGPL(比麻省理工学院稍微紧张,但它是功能性库!)
  3. 两者都是为C编写的。

答案 1 :(得分:5)

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

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

答案 2 :(得分:3)

list of implementations for C

对于超轻量级“线程”,请查看维基百科文章底部的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