【发布时间】:2017-10-31 08:21:11
【问题描述】:
在这篇文章中: https://blogs.msdn.microsoft.com/salvapatuel/2009/06/08/working-with-memory-mapped-files-in-net-4/
它惊呼:
内存映射文件是单台机器上多个进程相互通信的最有效方式。
如果此语句有效,那么使用 MMF 进行进程间通信和使用命名管道之间究竟有什么区别?
【问题讨论】:
-
命名管道的优点是易于使用,但 MMF 更快。此外,命名管道可以在机器间使用,而 MMF 只能在机器内使用。
-
其中一个区别是,命名管道支持服务器/客户端方案,而 MMF 不支持。
-
当您添加使 MMF 有用所需的一切时,它很少是“最有效的”。这是一个非常原始的原语,您总是需要添加同步以确保您只读取写入的数据。在 C# 中也很难利用,它只有在使用指针时才真正有效,因此您可以直接读取或写入映射内存。大多数教程将让您使用流。命名管道也使用 MMF 来交换数据,只是它隐藏在内核中。
标签: c# named-pipes memory-mapped-files