Windows 7上最快的IPC方法

Car*_*s00 37 c c++ windows boost ipc

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

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

Mat*_*lia 48

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

MSDN上提供了Windows支持的IPC方法的完整列表; 不过,如果你只是希望共享一个内存块的两个应用程序,你应该创建一个名为内存映射文件(由分页文件支持)与CreateFileMapping/ MapViewOfFile,这应该是最直接和最快的方法.文件映射的详细信息在MSDN的页面上进行了描述.

相关升压IPC类可以作为一个简单包装的共享内存的作用,据我所知它只是封装在相关系统专用的API调用,但最终你得到的通常的指针到共享内存块,因此操作应尽可能快使用本机API.

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