【问题标题】:sharing memory between two applications在两个应用程序之间共享内存
【发布时间】:2011-12-15 04:55:50
【问题描述】:

我有两个不同的 Windows 应用程序(两个不同的人编写代码)。一种是用 C++ 编写的,另一种是用 C# 编写的。我需要一些方法来在它们之间共享 RAM 中的数据。一个必须写入数据,另一个只读取写入的数据。我应该使用什么来使其最有效和最快? 谢谢。

【问题讨论】:

    标签: c# c++ process shared-memory


    【解决方案1】:

    您可以使用Memory Mapped Files

    Here 是一篇描述如何使用它们的文章。

    【讨论】:

    • 它们仅限于逻辑地址空间。 (在我的情况下最大 2GB,虽然我的 RAM 是 16GB)
    • 这不是问题,因为您可以映射多个文件。
    • 仅供参考,第二个链接的页面丢失/禁用。
    【解决方案2】:

    你可以使用NamedPipes

    命名管道是一种命名的单向或双工管道,用于管道服务器和一个或多个管道客户端之间的通信。命名管道的所有实例共享相同的管道名称,但每个实例都有自己的缓冲区和句柄,并为客户端/服务器通信提供单独的管道。实例的使用使多个管道客户端可以同时使用同一个命名管道。

    任何进程都可以访问命名管道,但需要经过安全检查,这使得命名管道成为相关或不相关进程之间的一种简单通信形式。

    【讨论】:

      【解决方案3】:

      使用 Windows File Mapping Object,它允许您在进程之间共享内存。

      【讨论】:

        【解决方案4】:

        我建议您重新设计它,让它使用基于消息的通信。它具有自动内存管理功能(与共享内存相比),在 .NET 中更强大且更易于使用。虽然速度较慢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-04-19
          • 1970-01-01
          • 2011-01-01
          • 2010-11-17
          • 2010-11-15
          • 1970-01-01
          • 2012-02-11
          相关资源
          最近更新 更多