-->

重量轻,携带C ++纤维,MIT许可(Lightweight, portable C++ fiber

2019-08-01 09:26发布

我想获得一个阿霍德轻巧,便携的纤维LIB与MIT许可证(或更宽松)的。 Boost.Coroutine没有资格(不轻便),既不做便携式协程库也不肯特C ++ CSP(均为GPL)。

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

Answer 1:

  1. Libtask :MIT许可证
  2. Libconcurrency :LGPL(略比MIT更紧,但它是一个功能库!)

两者都为C.写



Answer 2:

其实,我在博客 ,在过去这一点。 看一看! 我希望这回答你的问题。 在这里面,我涵盖数库,以及我在那些分别为系统编程(异步IO)有用特别感兴趣。

从覆盖显眼是Boost.Coroutine ,我将在这里讨论。 Boost.Coroutine可以被认为是“重量级”的概念(在其家人的类型方面),但执行是相当有效的。 真正的问题是,Boost.Coroutine是不完整的,(最后我选中)远远没有完成。 我花了一些时间,试图与笔者通过其非首发问题需要解决,因为我真的很期待与Boost.Asio的结合使用它(这是的Boost.Coroutine的主要目标之一),但作者并没有只好拿他的工作Boost的正式评审阶段的时间。



Answer 3:

对于C实现的列表

对于超轻“线程”看看Protothreads在维基百科文章的底部。



Answer 4:

现在你有一个加速许可证更好的两个选项:

  • Boost.Fiber
  • Boost.Coroutine2


Answer 5:

有一个速度极快的和轻量级的C协程不对称库- libaco 。

这是非常小的,非常快,非常高效存储:

随着生产就绪ç协程库的实现,这里是关于如何实现最快的,正确的协同程序库,并与严格的数学证明的详细文件;

它没有超过700 LOC以上,但有可能从协程库所需的全部功能;

基准部分示出了上下文协程之间进行切换的一个时间只需要大约10纳秒(用于独立堆的情况下)的AWS c5d.large机器上;

用户可以选择创建一个独立的堆栈或每股堆栈(可与他人分享)一个新的协同程序;

这是非常有效的存储器:10,000,000量CO的同时,只运行成本2.8 GB的物理存储器(与tcmalloc运行中,每个共具有120B复制堆栈大小配置)。

它也有一个非常详细的文档。

PS:

它是Apache许可证2.0版下。



文章来源: Lightweight, portable C++ fibers, MIT license