【问题标题】:Boost::Signals encapsulation over networkBoost::网络信号封装
【发布时间】:2010-08-05 13:58:55
【问题描述】:

我目前参与开发使用分布式计算来检测不同事件的软件。

当前的方法是:十几个线程同时在不同的(物理)计算机上运行。每个事件都有一个编号;每个线程将其检测到的事件广播给另一个线程,并从传入流中过滤相关事件。

我对此感到非常难过,因为它看起来很糟糕,难以维护,并且在系统升级时可能会导致性能问题。

所以我正在寻找一种灵活而优雅的方式来处理这个 IPC,我认为 Boost::Signals 似乎是一个不错的选择;但我没用过,想知道是否可以为网络通信提供封装。

【问题讨论】:

    标签: c++ boost ipc distributed-computing


    【解决方案1】:

    由于我不知道任何解决方案可以做到这一点,除了 Open MPI,如果我必须这样做,我会首先使用 Google's Protocol Buffer 作为我的消息容器。有了它,我可以创建一个包含源、目标、类型、id 等内容的抽象基本消息。然后,我将使用Boost ASIO 在网络上分发这些消息,或者通过命名管道/环回来分发本地消息。也许,在每台物理计算机中,一个专门的进程可能只是为了分发而运行。每个线程向它注册它感兴趣的消息类型,以及它的命名管道被称为什​​么。这个过程会知道所有其他服务的 IP。

    【讨论】:

      【解决方案2】:

      如果您需要网络上的 IPC,那么 boost::signals 不会帮助您,至少不能完全靠它自己。

      您可以尝试使用Open MPI

      【讨论】:

      • 感谢您的回答;然而 Open MPI 对我的问题来说似乎很大。也许我可以扩大我的问题:你知道任何(开源)通用库来包装不同网络协议上的线程通信吗?
      • 不,我没有,但我会用另一个建议添加另一个答案。
      猜你喜欢
      • 1970-01-01
      • 2022-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2017-04-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-08
      相关资源
      最近更新 更多