【发布时间】:2016-03-29 08:19:54
【问题描述】:
我有一个 c 进程,需要将大量 c 结构(大约每秒 10,000 个)发送到需要将数据放入匹配类的 java 进程。
每个数据包需要发送的数据大小约为 50-100 字节。
延迟是一个问题,因为数据需要实时显示,这就是我正在寻找当前解决方案的替代方案的原因。
目前我正在使用 JNI 和 POSIX 消息队列来执行此操作。有没有比使用 JNI 和消息队列/管道更好的方法?我在某处读到调用 JNI 方法通常会产生很多开销。当必须发送大量数据时,这会成为问题吗?
我想到的另一个解决方案是将数据写入 UNIX 套接字并在 java 中解析。
【问题讨论】:
-
Java 和 C 中的代码是否需要在两个不同的进程中运行?
-
@SamuelAudet 是的,数据来自一个 IDS 插件,它必须尽可能快地处理网络数据包。处理完一个数据包后,我们将解码后的数据发送到另一个处理图形的进程。此外,c 进程作为服务运行,而 java 程序应根据需要独立启动或停止,而不影响正在运行的 c 程序。
-
所以,我猜内存映射文件将是最有效的方法,这似乎是这种情况:stackoverflow.com/a/6412333/523744
标签: java c java-native-interface ipc