SyR*_*ity 10 c++ java linux ipc shared-memory
我目前正在使用Java和C++应用程序之间的IPC共享内存,但寻找更方便的替代方案.
有人可以建议一个性能和速度相同的更好的方法吗?
谢谢!
这取决于您计划如何让应用互动.在POSIX环境中,您有管道,共享内存,套接字,信号量和消息队列.看到这个问题:比较unix linux IPC获取更多信息.
您的流程(即客户/服务器,生产者 - 消费者等)的交互模型是什么?
根据个人经验,我建议你最好的选择是管道(因为它们只是读取和写入字节的文件)或套接字(因为两种语言都支持它们).
正如麦克隆所说,这很大程度上取决于你在做什么。AFAIK,没有一个 IPC 方法具有本机 Java 绑定,因此您可能必须使用 JNI 并自己进行绑定,因此所有不同的方法大致同样困难。如果您正在进行消息传递,我强烈建议使用消息队列。它们非常易于使用(一旦您拥有绑定),并且具有良好的性能。如果您需要“共享”某些资源,那么您可能希望坚持使用共享内存。
听起来你有某种客户端/服务器的东西,我会说使用消息队列、unix 域套接字或命名管道。它们都涉及在内核中复制数据,因此它们不像共享内存那么快,但它们仍然非常快。如果您有类似消息的数据(单个小数据包),请使用消息队列。这可能是最干净的解决方案。如果您有更多的数据流,请使用管道或套接字。套接字的优点是,如果您愿意,您可以在以后轻松地使其网络透明(如 X11),但它们比管道稍微难以使用。性能可能非常相似。