【发布时间】:2014-11-11 16:55:07
【问题描述】:
我必须创建一个基于文件的通信协议(该文件是内存映射的,但我们现在可以从中抽象出来)。字节布局是固定的。有几个区域,具有不同的功能。
“通知”有一定的区域,例如。 G。字节# 0 到字节# 32k。每个字节具有两个值之一。假设 0x00 和 0xFF。索引具有语义,因此如果 byte# 0 从 0x00 更新到 0xFF,则意味着与 key 0 关联的信息已更新。 对我来说有趣的是从 0x00 到 0xFF 的所有转换,反之亦然。
所以我的问题是:
是否有一种高效,可能是原生的非轮询方法来检测特定区域中的文件更改(分别是上述转换)?
其他信息
虽然我已将 java 指定为语言,但我愿意接受可以通过 java 调用的其他语言的解决方案(例如通过 JNI 调用的 C++)。
这是一个 1 对 n 协议,有 1 个主应用程序,最多可与 n 个其他应用程序通信。因此,检查整个文件是否有更改并不是最佳选择。我也不能说它不好,因为该应用程序的主要使用方式是在给定时间假设一对一,但情况并非总是如此。
我还被告知只能使用 1 个文件。
【问题讨论】:
-
您还需要决定是否希望它是跨平台的。
-
我不确定文件中的特定区域是否有解决方案,但您可以监听任何文件更改,然后轮询特定字节并检查这些。
-
@chiastic-security 是的,你是对的。实际上它是跨平台的。但是java现在就足够了。
标签: java shared-memory