【问题标题】:Memory Mapped File VS Named Pipe - C#内存映射文件 VS 命名管道 - 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 来交换数据,只是它隐藏在内核中。

标签: c# named-pipes memory-mapped-files


【解决方案1】:

命名管道用于两个或多个进程之间的短消息。 根据我的经验,它很慢。

如果您想共享大量数据,那么使用 MMF 是正确的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2021-11-18
    • 2016-12-08
    • 2023-04-11
    • 2014-01-26
    • 1970-01-01
    • 2020-11-06
    相关资源
    最近更新 更多