提问者:小点点

跨平台IPC的包装器接口


我是IPC的新手。 我想在我的项目中使用不同的IPC机制。 根据性能和需求,我需要将IPC机制更改为消息队列/共享内存或套接字。

我希望使用公共API来发送,接收和初始化IPC,即使IPC机制在内部发生变化。

在C++中有开放源码的包装器库或公共接口吗? 或者我需要开发自己的API来定义这一点吗? 我想参考一下,如果有任何已经可用的接口这些。

我正在寻找类似的东西在下面

  1. 初始化(参数);
  2. 发送(参数);
  3. 接收(参数);

还有更多

提前致谢


共1个答案

匿名用户

有许多用于IPC的C++库(在上面询问库是离题的)。 我的同事

  • 增强进程间
  • Zeromq
  • Protobuf-仅序列化

对我来说也挺好的。 对于C++来说,没有“统一的IPC接口”这回事,你必须只是想清楚你到底需要什么,并根据你的需要来设计接口。 我通常使用类似于下面界面的东西:

class AbstractIPC
{
public:
  virtual ~AbstractIPC() = default;
  virtual bool open() = 0;
  virtual bool close() = 0;
  virtual int send(const uint8_t* data, size_t, length) = 0;
  virtual int receive(uint8_t* data, size_t, length) = 0;
};

不使用std::vectorstd::string的原因是与其他组件的兼容性,这些组件可能是用C编写的。

不是超级精确的答案,但我希望它能给你一些洞察力从哪里开始。