如何使用内存映射文件进行进程间通信?

Posted

技术标签:

【中文标题】如何使用内存映射文件进行进程间通信?【英文标题】:How can I use memory mapped files for interprocess communcation? 【发布时间】:2009-10-08 15:53:06 【问题描述】:

.Net 4 将对内存映射文件提供出色的支持。不同博客 (http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx) 上列出的两个主要应用程序是:

1) 编辑大文件,

2) 进程间通信。

我已经在命名管道上使用 WCF 进行进程间通信。

有人可以向我解释/提供一些示例如何使用内存映射文件实现类似的功能吗?例如,我想从一个进程中调用一个方法,该方法将在另一个进程中执行,结果在调用进程中“发送”/可用。

【问题讨论】:

【参考方案1】:

使用 IPC,您必须在每次调用方法时在传递数据之前对数据进行序列化/反序列化。使用 MMF,您仍将使用 IPC 进行通知,但是您将不再传递序列化数据,而是传递内存句柄。这可以显着提升处理大数据的性能,因为您可以节省序列化/反序列化的时间和空间。

【讨论】:

好的,所以如果我理解正确,我将不得不使用混合方法。我只是好奇 IPC/WM_ 消息如何使用 MMF 来提供基于事件的模型。根据微软的套接字、管道、OLE 等都是基于 MMF 的。

以上是关于如何使用内存映射文件进行进程间通信?的主要内容,如果未能解决你的问题,请参考以下文章

.Net 进程间通信

Windows进程间共享内存通信实例

进程间通信(共享内存)

进程间通信( 管道 )

使用内存映射开发高性能进程间消息通信组件

Linux系统编程-进程间通信(mmap内存映射)