我有一个 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/