【问题标题】:BOOST/STD/AKKA: How do I do actor programming in C++?BOOST/STD/AKKA:如何在 C++ 中进行演员编程?
【发布时间】:2014-02-16 00:51:42
【问题描述】:

(为了与 S.O. 兼容,对问题和描述进行了改写)

奇怪的是,C++ 还没有被广泛采用、经过同行评审的演员模型库(按 BOOST 和 STD 的顺序)。我看到Theron,但它看起来像一个人和他的代码:无论它有多好,它都不是我希望生产代码依赖的东西。

因此,我如何在 C++ 中进行 Actor 模型编程,而无需使用未经验证的库?我应该使用哪些 BOOST 类?

注意:我是在面对之前关于 S.O. 的一两个问题提出这个问题的。当人们搜索“actor C++”时就会出现这种情况,因为它们几乎没有或没有吸引力。对于 SEE SHARP,有 this thread 但对于 C++,即使是获得中等关注度的一个问题 this guy, a question from FIVE YEARS AGO 也得到了指向死链接的指针的回答!

【问题讨论】:

标签: c++ boost std akka actor


【解决方案1】:

libcppa 是个不错的选择。看起来比 Theron 更好(它似乎已经死了——作者没有回复我关于我发现的错误的电子邮件)。此外,还有一个名为 Boost.Actor 的 libcppa “分支”来自同一作者 here。所以希望在几年内,我们将在 Boost 中拥有一个经过充分测试且经过同行评审的 Actor 实现 :)

【讨论】:

【解决方案2】:

目前缺乏答案似乎意味着截至 2014 年,在独立于平台的 C++ 中没有经过严格同行评审的 Actor 系统。

如果您使用的是 Microsoft VS,则可以使用 Microsoft Asynchronous Agents library

还有Intel TBB FlowGraph library,但全球可用性似乎值得怀疑,因此尚不清楚它在 Android/Exynos/Snapdragon/etc 或 iOS/armv 系统上的运行情况。 See this question.

【讨论】:

  • “全球可用性似乎有问题”是什么意思?
  • 下一句回答你的问题。
【解决方案3】:

libcppa 尚未经过同行评审,但它正在由iNET working group Hamburg University of Applied Sciences 开发。围绕它的开发有publications,它包括一个Benchmark Suite,它目前正处于Boost.Actor 名称下的Boost 初步提交过程中。如果您希望将来有一个同行评审的演员系统,请继续在Boost Mailing List 上加入讨论,或者在全新的Boost Library Incubator 中给 Boost.Actor 一个(简短的)评论。

【讨论】:

    【解决方案4】:

    我同意代码应该经过同行评审,并且需要这样的 C++ 库。我的代码基于 Theron,我发现它非常完整且非常高效,并且具有适当的 C++ API(比 libcppa 好得多)。 Ashton 也总是迅速回应我的所有要求。让我们希望它很快就会发布给其他提交者!

    Theron 的缺点是它的分布式通信机制被破坏了,因为它基于 XS,ZeroMQ 的死变种。我正在重新设计通信机制,并打算在 2015 年 5 月之前将其发布给 Theron,并完全支持 ZeroMQ。因此,Theron 至少得到了我适当的同行评审......

    我不建议您构建自己的 Actor 机制 - 正如您所说,它将只是“另一个拥有他的代码的人”。如果我们能有一个合适的 Theron 版本,我们都可以工作,那就更好了。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 2011-11-17
      相关资源
      最近更新 更多