我在 .net 中遇到了几个处理 MMF 的教程。不过,它们都采用类似的方法 - 序列化文件并以字节形式批量写入,以字节形式批量读取并反序列化。
但从理论上讲,我不需要反序列化整个哈希表即可使其可操作,只需反序列化其中我要查找 kvp 的一小部分即可。我想我可能需要编写一个自定义类来执行此操作,但以防万一 - 有没有办法让 .net 对象将 mmf 视为实际的 ram?
最佳答案
没有。
最接近的方法是使用 unsafe
代码,这使您可以更好地控制非托管指针。但是,您需要求助于 struct
s 和其他“原始”类型 - 不支持类。
但是,很难说出这样做的意义是什么 - 您首先抛弃了使用 C# 的全部原因。像HashSet
这样的类甚至 List<T>
严重依赖自动内存管理,这是你根本无法做到的 unsafe
代码。也许对这部分代码使用 C/C++ 并将其链接为 DLL 会是一个更好的主意?
关于.net - 有没有办法使用内存映射文件作为 .net 对象的事件容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32717687/