使用Boost.Fiber,c ++是否更接近Erlang风格的流程/线程?

 i_Screw_Robots 发布于 2022-12-10 16:11

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

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

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

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

1 个回答
  • 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可能是最好的解决方案.

    2022-12-11 02:13 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有