Windows 7上最快的IPC方法

时间:2011-08-19 20:48:30

标签: c++ c windows boost ipc

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

ReadProcessMemory还是其他什么? 我们想使用普通C,但是,例如,Boost库对IPC使用了什么?

1 个答案:

答案 0 :(得分:48)

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

Windows支持的IPC方法的完整列表可用on the MSDN;仍然,如果你只有两个想要共享内存块的应用程序,你应该使用CreateFileMapping / MapViewOfFile创建一个命名的内存映射文件(由页面文件支持),这应该是最多的简单快捷的方法。有关文件映射的详细信息,请参阅MSDN上的its page

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

因此我建议你使用Boost.Interprocess,因为它是可移植的,C ++友好的(它提供RAII语义),并且在创建共享内存块后不会给你带来任何性能损失(它可以在共享内存上提供其他功能,但它们都是选择加入的 - 如果你只是想要共享内存,那么就可以了。)