完全托管的共享内存.NET实现?

我正在寻找.NET的免费,完全托管的共享内存实现(P / Invoke是可以接受的,混合C ++ / CLI不是)。

听起来你正在寻找.NET 4.0 BCL支持的内存映射文件 。

从.NET Framework版本4开始,您可以使用托管代码访问内存映射文件,方法与本机Windows函数访问内存映射文件的方式相同,如在MSDN Library中管理Win32中的内存映射文件中所述

嗯,.NET框架是免费的,推荐。 .NET 4.0支持System.IO.MemoryMappedFiles命名空间类。 共享内存是一个相当剧烈的阻抗与垃圾收集器的概念不匹配,这就是为什么它需要一段时间。 除非使用指针,否则从GC堆复制到MMF视图是不可避免的。

其他IPC机制也使用共享内存,因为它内置于内核中,所以它并不明确。 这一切都以大致相同的速度运行,微秒设置映射,然后只是总线带宽来进行内存到内存的复制。 每秒5千兆字节是你遇到的最慢的。

本文将在第3节中介绍如何使用P / Invoke包装MapViewOfFile和朋友。