内存映射文件 VS 命名管道 - C#
Posted
技术标签:
【中文标题】内存映射文件 VS 命名管道 - C#【英文标题】:Memory Mapped File VS Named Pipe - C# 【发布时间】: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 来交换数据,只是它隐藏在内核中。 【参考方案1】:命名管道用于两个或多个进程之间的短消息。 根据我的经验,它很慢。
如果您想共享大量数据,那么使用 MMF 是正确的。
【讨论】:
以上是关于内存映射文件 VS 命名管道 - C#的主要内容,如果未能解决你的问题,请参考以下文章