从您的内存映射文件创建的每个“视图”一次只能由一个线程访问,但是您可以创建多个视图流,每个线程可以同时写入或读取它。
然而,如果多个视图尝试同时写入相同的位置,则可能会使数据“混合”在一起。示例中的互斥锁可防止此类混合。如果一个应用程序仅写入文件,而另一个应用程序仅读取,则不需要互斥锁,只有多个写入者才需要它。
如果一个应用程序仅写入文件,而另一个应用程序仅读取文件,则不需要互斥量,您只需要为多个编写者使用它。
谢谢! - BendEgMutex
)。ReaderWriterLockSlim
或较旧的ReaderWriterLock
。FileStream.Lock()
和 FileStream.Unlock()
。更棘手的解决方案是同时使用信号量和互斥锁。查看 this SO question 中的链接以获取更多思路。FileShare.None
锁定整个内存映射文件。
BinaryWriter
从一个应用程序写入数据,然后通过BinaryReader
从另一个应用程序读取数据。 - BendEgMutex
仅是为了同步演示进程的工作;否则,在写入任何数据之前,读取进程可能已经终止。裸数据交换不需要同步,尽管通常希望在数据准备好被读取或写入时发出某种信号。 - JimmyB