gpt4 book ai didi

Java 到 C++ 进程间通信

转载 作者:搜寻专家 更新时间:2023-10-31 01:28:18 33 4
gpt4 key购买 nike

enter image description here

我的应用程序由在同一台机器上运行的两个组件组成:

1) 处理简单任务的瘦 Java 模块,如数据库持久化、处理请求等
2) 使用OpenCV和CUDA进行大量计算的C++模块

假设两个组件独立启动。

第 1 步: Java 层的 init() 方法调用 C++ 模块的 init() 方法,该方法将从S3,做一些图像处理并将结果保存在GPU内存中。init()只被调用一次并且该数据在GPU内存中保持不变。

第 2 步: 连续调用 Java 层中的 calc() 调用 C++ 模块中的 calc() 方法,该方法使用传递的参数利用 GPU 内存上的数据进行一些处理,并将结果发送到Java层。

我的问题是如何以更少的开销在 Java 和 C++ 进程之间实现此 IPC?

一个明显的方法是使用 TCP 套接字(可能使用 GRPC)

是否可以使用 JNI(或 SWIG)进行这种 IPC 通信?

最佳答案

我假设应用程序等不是非常关键。然后一个 RPC 框架,比如 Apache Thrift 可能是一个理想的候选者,因为它简化了 RPC 任务(基本上使用 TCP 连接进行通信)。通过本地 TCP 连接发回结果图像听起来不会引起任何问题。 https://thrift.apache.org/

开销最小的是一些共享内存或内存映射文件。但是据我所知,您需要(大量)更多的工作才能完成。

关于Java 到 C++ 进程间通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52492982/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com