2011-08-26 59 views
4

我有点失望地发现C++0x并发标准似乎对消息传递Actors模型没有任何本地支持。建立在C++ 0x线程标准上的Actor实现

有没有这方面的支持,我失踪了?也许在期货/承诺中有什么?是否有任何强大的社区努力在C++0x线程标准的顶部构建事实上的标准实现?

+0

我觉得已经有这样一个东西了:Boost.MPI。 –

+0

社区如何能够为尚未发布的标准构建一些东西? –

+0

@尼科尔:假设本月早些时候批准的内容与先前在草案中公布的内容非常相似;已经有关于C++ 11并发性的书籍也有同样的原因。 – Chinasaur

回答

4

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

主要是因为我首先发现它,并且因为它有非常好的文档,我继续尝试Theron,它的工作原理非常好。我的测试应用程序并非特别适合Actors,只需要多个Actor作为硬件内核,但是我在6个内核上使用6个线程和6个加速,在6个使用超线程的内核上使用12个线程,速度提高了4.5倍。相当不错,它只需要几个小时就可以开始工作,而且我根本不必接触线程或互斥锁。我还实现了一个衍生出数千个演员的版本,虽然这个实现的速度明显较慢,但也能很好地工作。

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

我也尝试过libcppa并获得了一个没有太多麻烦的玩具示例。这个API似乎不太稳定,当时文档很少,但我被告知最近它已被充实。

+0

(虽然'Theron'本身只花了几个小时才能开始工作,但是从'Matlab'构建一个'mex'插件花费了大量的工作。如果有人想让这个工作成功,请参阅我的博客文章:http:/ /absurdlycertain.blogspot.com/2011/09/preamble-what-follows-is-guide.html) – Chinasaur

+2

libcppa的文档状态发生了显着变化。有[手册](http://neverlord.github.com/libcppa/manual/)以及[doxygen文档](http://neverlord.github.com/libcppa/)和[邮件列表] (https://groups.google.com/d/forum/libcppa)获得更多支持。 – neverlord

+1

谢谢,我也很容易地用libcppa得到了一些东西。我更新了我的答案,以反映这一点以及关于更新文档的说明。 – Chinasaur