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

时间:2011-01-02 21:54:30

标签: c# .net ipc shared-memory

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

3 个答案:

答案 0 :(得分:15)

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

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

答案 1 :(得分:8)

听起来好像在寻找.NET 4.0 BCL支持的Memory-Mapped Files

  

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

答案 2 :(得分:2)

This article在第3节中解释了如何使用P / Invoke包装MapViewOfFile和朋友。