在进程之间从磁盘共享内存映射文件

时间:2014-07-31 22:26:34

标签: c# ipc memory-mapped-files

当使用.NET中可用的内存映射功能在进程执行期间共享进程之间的物理文件(它存在于磁盘上)时,我遇到的问题似乎微不足道。

我的目标是:

  • 我在磁盘上有一个文件,比方说File.dat
  • 我有两个独立的过程(它们可能同时产生,但不一定会产生)
  • 首先启动的人应该将文件加载到内存中,然后使用它 用于操作。另一个进程检查文件是否已加载 在启动时,看到它确实是,所以它只是继续它的 任务

目前,我正在使用MemoryMappedFile.CreateFromFile功能。但是,我注意到有办法检查是否有其他进程已将文件加载到内存中。尝试同时从两个进程加载此文件会导致共享访问冲突。

CreateOrOpen函数,但它仅适用于非持久性数据,这不是我的情况。我想象了一个类似Mutex的API,在尝试创建具有相同名称的多个文件或执行类似操作时,该函数会抛出异常。显然,这种方法在这种情况下尚未被采用,那么我还可以用什么来实现我的目标呢?

0 个答案:

没有答案