微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c 11 – 使用Boost.Fiber可以更接近Erlang风格的进程/线程吗?

我正在读 http://olk.github.io/libs/fiber/doc/html/在我看来,Boost.Fiber C正在接近Erlang的能力,拥有数千个“进程”,也被称为“绿色进程[线程]” http://en.wikipedia.org/wiki/Green_threads.

我的问题是,Boost.Fiber是否准备生产,现在有c个替代品有更好的文档和示例吗?有人提到轻量级线程,但我似乎找不到引用它.最后一个问题是,为什么C标准不包括光纤?

我对此感兴趣的原因是因为我有一个实时更新,其中值更改可以影响(产生)数百个/小时但尴尬的并行计算. C线程模型不能很好地工作,imo.请不要使用GPU,因为目前需要太长时间才能将信息传输到GPU.

我意识到Erlang远不止这一切,所以请不要在一般情况下教Erlang对C.

解决方法

Boost.Fiber于2014年1月由Boost社区审核,被发现需要大量额外的工作.请参阅 http://lists.boost.org/boost-announce/2014/01/0393.php社区评论的结果.

C 17还希望通过使用提出的await关键字,以基于可恢复功能的方式获得像M:N线程模型一样的WinRT.微软在他们的编译器中实现了支持,除了用于期货的魔术记忆分配技巧之外,它看起来非常有希望.相关的N文章是N4134(http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2014/n4134.pdf),正如你将看到的那样,如果被接受,即使语法有点钝,这个可恢复函数的形式确实会提供Erlang类型的可扩展性(嘿,它是C,它的语法何时是直接的!).

当然,如果现在需要一个便携式解决方案,要么使用ASIO(请注意:它是脆弱的),要么使用ASIO线程,要么使用ASIO线程进行无栈协同路由,而是使用类实例作为执行状态,这是非常相似的,或者无论如何使用Boost.Fiber.如果你只需要Windows,我会自己推出微软的专有扩展,除非放弃WinRT,否则他们不同于放弃它们

编辑:Boost.Fiber的作者告诉我,截至2015年1月,社区评论的推荐变化已经完成,除了文档改进,Fiber被认为可以纳入官方Boost.如果确实如此,那么在编译器中出现最终可恢复功能的官方C 17语言支持之前,Fiber可能是最好的解决方案.

原文地址:https://www.jb51.cc/c/114699.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐