c – 在UNIX进程之间交换适量大量数据的最佳方法是什么?
在UNIX进程之间交换数据中等大量数据(多兆字节,但不是千兆字节)的最佳方法是什么?
我认为,它将是内存映射文件,因为大小限制为seem tolerable enough. 我需要双向通信,所以常见的管道无济于事.据我所知,对于套接字和UDP,存在大小限制(也见here). 阅读相关问题,如this,有些人推荐共享内存/ mmap,其他人推荐使用套接字. 还有什么我应该研究的吗?例如,是否有一些更高级别的库通过提供例如IPC来帮助IPC. XML序列化/反序列化数据? 由于评论而编辑: 在我的特殊情况下,有一个父/控制器进程和几个子进程(不能使用线程).控制器根据请求为孩子提供一些可能适合一个UDP包的关键数据.儿童根据关键数据进行操作,并根据密钥向控制器提供信息(信息的大小可以是10-100MB). 问题:响应数据的大小,在密钥请求上通知父级的机制,同步 – 父级必须在传递给子级后从其列表中删除密钥,不应发生重复的密钥处理. 不得使用Boost和其他第三方库(不幸的是).我或许可以使用SunOS 5.10系统提供的库. 解决方法
套接字.在使用锁或其他方式编写或读取内存时,您不必保护内存,以使其并行执行安全.另一个好处是,您可以非常轻松地将代码拆分为两个单独的可执行文件,并使用套接字通信代码在不同的计算机上执行这些可执行文件.
在我看来,主要的缺点是你必须找到一个方案来(去)序列化你的数据并将数据块拆分/组装成几个数据包. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |