2010-08-05 36 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