java - 将结构从 c 发送到 java 进程

标签 java c java-native-interface ipc

我有一个 c 进程,需要将大量 c 结构(大约每秒 10,000 个)发送到需要将数据放入匹配类的 java 进程。

每个数据包需要发送的数据大小约为 50-100 字节。

延迟是一个问题,因为数据需要实时显示,这就是为什么我正在寻找当前解决方案的替代方案。

目前我正在使用 JNI 和 POSIX 消息队列执行此操作。有没有比使用 JNI 和消息队列/管道更好的方法?我在某处读到,调用 JNI 方法通常会产生很大的开销。当必须发送大量数据时这会成为问题吗?

我想到的另一个解决方案是将数据写入 UNIX 套接字并用 java 解析它。

最佳答案

如果您必须最终使用 Java 处理数据,那么请删除尽可能多的中间步骤。

如果您可以将数据直接读取到 Java 中(绕过 JNI 和 C 代码),那么就这样做。避免 JNI、消息队列和(大概)C 接收数据的阶段。队列也无助于延迟。

如果数据以 C 友好的形式开始,而对 Java 不友好,那么我会考虑完全切换到 C 或 C++,而不是根本用 Java 进行处理。

关于java - 将结构从 c 发送到 java 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34426507/

相关文章:

c - JNI/C 库 : passing byte ptr

java - JNI——多线程

Java sqlite 执行数千个查询

java - 如何从重复的映射值生成唯一键

c - C 函数声明中的无类型参数

c - 为什么这个简单的 C 程序会在运行时崩溃?

c - F90读取C数据文件

android - Android Wear 是否支持 Android Studio 中的 C++ (JNI)?

java - JSON 文件解析过程,针对那些不是每个数组中都有的字段

java - 正则表达式与偶尔的字符串包装器分割线 - 无法理解正则表达式