在Windows 7上,最快的进程间通信(IPC)方法是什么?我们只想共享一个内存块(双向)。
是ReadProcessMemory
还是别的什么?我们想使用普通的C
,但是,例如,Boost库在IPC中使用什么?
发布于 2011-08-20 04:56:00
ReadProcessMemory
甚至不应该被列为进程间通信方法;是的,它可以这样使用,但它的存在主要是为了调试目的(如果查看它的引用,它位于“调试函数”类别下),而且它肯定比“真正的”共享内存慢,因为它将进程的内存复制到指定的缓冲区中,而真正的共享内存没有这种开销。
Windows方法的完整列表可以在on the MSDN中找到;不过,如果您只有两个应用程序想要共享一个内存块,那么您应该使用CreateFileMapping
/MapViewOfFile
创建一个命名的内存映射文件(由分页文件支持),这应该是最简单、最快的方法。有关文件映射的详细信息,请参阅MSDN上的its page。
relevant Boost IPC classes可以充当共享内存的薄包装器,它只封装了对相关系统特定API的调用,但最终您将获得指向共享内存块的常用指针,因此操作应该与使用本机API一样快。
正因为如此,我建议你使用Boost.Interprocess,因为它是可移植的,对C++友好的(它提供了RAII语义),并且在创建共享内存块后不会给你带来任何性能损失(它可以提供关于共享内存的额外功能,但它们都是可选的-如果你只是想要共享内存,你就会得到它)。
https://stackoverflow.com/questions/7127242
复制相似问题