我目前正在开发一个相当大的单线程,基于事件的应用程序,该应用程序是围绕Linux下的epoll和其他平台下的类似技术设计的。目前,每当我们希望两个实例进行通信时,它们通常通过套接字来执行,无论它们是否在同一台机器上运行。出于性能原因,我设想使用某种形式的IPC来加速相同的机器通信。现在,我需要决定使用哪种IPC机制。
以下因素对我很重要:
我愿意为不同的平台使用不同的机制,只要它们都使用相同的范例。我也愿意在C / C ++ / Obj-C中尽可能深入地获取特定于平台的绑定。
有什么建议吗?
感谢。
答案 0 :(得分:3)
Unix套接字。 命名管道。 FIFO中。
这些都提供相同的基本功能 - 相同的机器跨进程通信。这些实现提供了稍微不同的行为。
它们都使用文件描述符,所以你可以直接将它们插入到套接字的位置。
答案 1 :(得分:2)
实际上,正如skwllsp所提到的,AF_INET套接字针对本地主机上的数据传输进行了优化,速度和复杂性与fifos,pipe,unix套接字相当(几乎相同?)(如果使用了很多skbuff处理目的地是同一个主机)。我的2美分是使用套接字。这样,您不仅可以为IPC机制保留相同的接口,还可以成功地将代码重用于远程和本地方案。
答案 2 :(得分:0)
试用Unix SysV IPC。它支持: -
这可能对你有帮助。
此链接可能会有所帮助: http://www.ibm.com/developerworks/aix/library/au-ipc/index.html