Windows 7上最快的IPC方法

什么是Windows 7上最快的可能的进程间通信(IPC)方法? 我们只想分享一个内存块(双向)。

它是ReadProcessMemory还是别的? 我们想使用纯C但是,例如,Boost库用于IPC的是什么?

ReadProcessMemory甚至不应该被列为IPC方法; 是的,它可以这样使用,但它主要用于调试目的(如果你检查它的引用,它在“调试函数”的类别下),它肯定比“真实的”共享内存慢,因为它复制了一个进程到指定的缓冲区,而真正的共享内存没有这个开销。

MSDN上提供了Windows支持的IPC方法的完整列表; 如果只有两个应用程序要共享一个内存块,则应该使用CreateFileMapping / MapViewOfFile创建一个命名的内存映射文件(由页面文件支持),这应该是最直接,最快速的方法。 文件映射的详细信息在MSDN的页面上进行了描述。

相关的Boost IPC类可以作为共享内存的简单包装器,AFAIK只封装对相关系统特定API的调用,但最终得到通常指向共享内存块的指针,所以操作应该尽可能快作为使用本地API。

正因为如此,我建议你使用Boost.Interprocess ,因为它是可移植的,C ++友好的(它提供了RAII语义),在共享内存块创建后不会给你任何性能损失(它可以在共享内存上提供额外的功能,但是他们都是选择性的 – 如果你只是想共享内存,你就可以得到它)。