multithreading - 基于 C++0x 线程标准构建的 Actors 实现

标签 multithreading concurrency actor c++11

我有点失望地发现 C++0x并发标准似乎没有对消息传递 Actors 模型的任何 native 支持。

我缺少对此的任何支持吗?也许 future / promise 中有什么?是否有任何强大的社区努力在 C++0x 之上构建事实上的标准实现?线程标准?

最佳答案

目前我找到了两种可能的解决方案:Theronlibcppa .两者都基于 Boost 线程,因此应该可以轻松移植到 C++11 线程。两者都是由个人开发的。

主要是因为我先找到了它,而且因为它有非常好的文档,所以我继续尝试 Theron它工作得很好。我的测试应用程序不是特别适合 Actors,只需要与硬件内核一样多的 Actors,但我在 6 个内核上的 6 个线程下获得了大约 4.5 倍的加速,在 6 个内核上的 12 个线程和超线程下获得了 6 倍的加速。非常好,只需要几个小时就可以开始工作,而且我根本不需要接触线程或互斥锁。我还实现了一个产生数千个 Actor 的版本,并且运行良好,尽管此实现速度明显较慢。

我发现的唯一缺点是它不适用于进程间/机器间/分布式应用程序,而且它目前有点以 Windows 为中心(尽管我让它在 Mac 和 Linux 机器上运行没有太多麻烦)。

我还尝试了 libcppa 并得到了一个没有太多麻烦的玩具示例。 API 似乎不太稳定,当时文档很少,但我听说它最近已经充实了。

关于multithreading - 基于 C++0x 线程标准构建的 Actors 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7209131/

相关文章:

c - 如何知道现有 Openmp 线程的数量

Java:当从另一个类引用时,为我的框架定义的绘制方法不会调用 repaint()

c++ - 如何在运行 SDL 程序时降低 CPU 使用率?

scala - Akka - 是否有可能在 Actor 的主管中收到有关它失败的消息?

java - 是否可以在 Android 项目中运行最新版本的 Akka 框架(2.5.2)?

c++ - 返回 protected 数据时如何使用 lock_guard

java - 从阻塞方法调用创建 CompletableFuture

java - 用于大数据的 Java 并行计算

scala - 使用 Scala 2.8 continuations 递归遍历一个 LARGE 目录

python - Django 页面点击计数器并发