2010-08-05 54 views
1

我目前參與了使用分佈式計算來檢測不同事件的軟件的開發。Boost ::信號封裝在網絡上

目前的方法是:十幾個線程同時在不同的(物理)計算機上運行。每個事件都被分配一個數字;並且每個線程都將其檢測到的事件廣播到另一個線程並從傳入流過濾相關事件。

我對此感覺非常糟糕,因爲它看起來很糟糕,很難維護,並且在系統升級時可能導致性能問題。

所以我正在尋找一個靈活和優雅的方式來處理這個IPC,我認爲Boost :: Signals似乎是一個很好的候選人;但我從來沒有使用它,我想知道是否有可能爲網絡通信提供封裝。

回答

1

由於我不知道有任何解決方案可以做到這一點,其他的Open MPI如果必須這樣做,我會首先使用Google's Protocol Buffer作爲我的消息容器。有了它,我可以創建一個抽象的基本消息,其中包含源,目標,類型,ID等內容。然後,我將使用Boost ASIO在網絡上分發這些消息,或通過名爲PIPE/loopback的本地消息。也許,在每臺物理計算機中,專門的流程可能只是爲了分發而運行。每個線程向它註冊它感興趣的消息類型,以及它被調用的命名管道。這個過程將知道所有其他服務的IP。

0

如果你需要網絡上的IPC,那麼boost :: signals將不會對你有幫助,至少不是完全靠自己。您可以嘗試使用Open MPI

+0

謝謝你的回答;但對於我的問題,Open MPI似乎相當大。 也許我可以擴大我的問題:你知道任何(開源)通用庫來包裝線程通信通過不同的網絡協議? – Nielk 2010-08-06 09:06:38

+0

不,我不知道,但我會用另一個建議添加另一個答案。 – Gianni 2010-08-06 12:36:59