Windows 7上最快的IPC方法

Fastest IPC method on Windows 7

本文关键字:IPC 方法 Windows      更新时间:2023-10-16

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

ReadProcessMemory还是别的什么?我们希望使用普通的C,但是,例如,Boost库对IPC使用什么?

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

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

相关的Boost IPC类可以作为共享内存的薄包装,AFAIK它只封装了对相关系统特定api的调用,但最终你得到了通常指向共享内存块的指针,所以操作应该和使用本机api一样快。

因此,我建议您使用Boost。进程间,因为它是可移植的,c++友好的(它提供RAII语义),并且在创建共享内存块之后不会给您任何性能损失(它可以提供共享内存上的附加功能,但是它们都是可选的-如果您只想要共享内存,您就可以得到它)。