在两个应用程序间共享内存

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

您可以使用内存映射文件 。

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

使用Windows 文件映射对象 ,它允许您在进程之间共享内存。

您可以使用命名 pipe道 。

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

任何进程都可以访问命名pipe道,受安全检查的约束,使得命名pipe道成为相关或不相关进程之间简单的通信forms。

我build议你重新devise它,让它使用基于消息的通信。 在.NET中使用自动内存pipe理(与共享内存相比)更强大,更容易使用。 虽然比较慢

它必须是你分享的内存? 如果没有,你可以写你的数据来从一个应用程序说一个XML文件,并与另一个读取XML。 您必须确保一次只有一个应用程序读取资源。 在xml文件的情况下,您可以在名为“xml_filename.lock”的XML文件的目录中创build一个文件,该文件如果存在,则表示该XML文件正在被其他应用程序使用。

如果这种解决scheme不适合你的目的,请告诉我更多关于你想要做的事情。 原则上,应用程序不应与其他应用程序共享内存,以确保稳定性和安全性。