【问题标题】:Remote proxy with shared memory in C++C++ 中具有共享内存的远程代理
【发布时间】:2009-05-26 19:28:53
【问题描述】:

假设我有一个守护进程,它通过共享内存将其内部状态共享给各种应用程序。进程可以将 IPC 消息发送到命名管道上的守护进程以执行各种操作。在这种情况下,我想为客户端创建一个 C++ 包装类,它充当一种“远程代理”,以隐藏客户端的一些血腥细节(同步、消息传递等),并更容易隔离代码单元测试。

我有三个问题:

  • 一般来说,这是一个好主意/方法吗?
  • 对于此设置中的同步,您有任何提示或陷阱,或者使用标准的读写器互斥设置就足够了吗?
  • 我应该考虑哪些框架?

所讨论的目标是具有 2.18 内核的嵌入式 linux 系统,因此在内存和编译器功能方面存在限制。

【问题讨论】:

    标签: c++ linux embedded shared-memory


    【解决方案1】:

    Herb Sutter 有一篇文章Sharing Is the Root of All Contention 我大体同意;如果您使用的是共享内存架构,那么您将面临很多潜在的线程问题。

    客户端/服务器模型可以使事情变得非常简单,客户端写入指定的服务器管道,服务器在唯一的客户端管道上写回(或使用套接字)。它还将使单元测试更简单(因为您不必担心测试共享内存),可以避免互斥等。

    【讨论】:

    • 当然,我完全同意这个观点。我认为制作代理类将是朝着这个方向迈出的良好的第一步。一旦对客户隐藏了访问权限,似乎转移到另一种共享机制会容易得多。
    【解决方案2】:

    有 Boost.Interprocess 库,但我无法评论它是否适合嵌入式系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多