基于C ++ 0x线程标准构建的Actor实现

时间:2011-08-26 18:37:07

标签: multithreading concurrency actor c++11

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

我是否缺少对此的支持?期货/承诺中的某些东西?是否有任何强大的社区努力在C++0x线程标准之上构建事实上的标准实现?

1 个答案:

答案 0 :(得分:4)

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

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

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

我也尝试了libcppa并且玩了一个玩具示例而没有太多麻烦。 API似乎不那么稳定,当时文档很少但是我被告知它最近已经充实了。