msi*_*msi 3 c c++ serialization ipc mmap
在 UNIX 进程之间交换中等大量数据(数兆字节,但不是千兆字节)的最佳方法是什么?
我认为,这将是内存映射文件,因为大小限制似乎足够可以忍受。
我需要双向通信,所以普通管道没有帮助。据我所知,套接字和 UDP 存在大小限制(另请参阅此处)。不确定 TCP 是否是在 . 的子进程和父进程之间进行通信的好主意fork()。
阅读诸如此类的相关问题,有些人推荐了共享内存/ mmap,其他人推荐了套接字。
还有什么我应该调查的吗?例如,是否有一些更高级别的库可以通过提供数据的 XML 序列化/反序列化来帮助 IPC?
根据评论进行编辑:
在我的特殊情况下,有一个父/控制器进程和几个子进程(不能使用线程)。控制器根据要求向儿童提供一些可能适合一个 UDP 数据包的关键数据。孩子们对按键数据进行操作,并向控制器提供基于按键的信息(信息大小可以是10-100MB)。
问题:响应数据的大小、通知父级有关密钥请求的机制、同步 - 父级在传递给子级后必须从其列表中删除密钥,不应发生重复的密钥处理。
Boost 和其他第三方库(不幸的是)不得使用。我也许可以使用SunOS 5.10系统提供的库。
插座。在使用锁或类似的东西写入或读取内存时,您不必保护内存以使其并行执行安全。另一个好处是,您可以非常轻松地将代码拆分为两个单独的可执行文件,并在不同的计算机上执行它们,也使用套接字通信代码进行网络通信。
在我看来,主要的缺点是您必须找到一种方案来对数据进行(反)序列化并将数据块拆分/组装到多个数据包中。
| 归档时间: |
|
| 查看次数: |
2716 次 |
| 最近记录: |