0

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

我有三个问题:

  • 一般来说,这是一个好主意/方法吗?
  • 您在此设置中是否有任何同步技巧或陷阱,或者使用标准的读写器互斥体设置是否足够?
  • 有什么我应该考虑的框架吗?

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

4

2 回答 2

2

Herb Sutter 有一篇文章分享是所有争论的根源,我大体同意;如果您使用的是共享内存架构,那么您将面临很多潜在的线程问题。

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

于 2009-05-26T20:36:26.577 回答
1

Boost.Interprocess库,但我无法评论它对嵌入式系统的适用性。

于 2009-05-26T19:42:15.233 回答