2011-08-26 28 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