Windows 7上最快的IPC方法
Fastest IPC method on Windows 7
Windows 7上最快的进程间通信(IPC)方法是什么?我们只希望共享一个内存块(双向)。
是ReadProcessMemory
还是别的什么?我们希望使用普通的C
,但是,例如,Boost库对IPC使用什么?
ReadProcessMemory
甚至不应该被列为IPC方法;是的,它可以这样使用,但它主要用于调试目的(如果你检查它的引用,它在"调试函数"类别下),而且它肯定比"真正的"共享内存慢,因为它将进程的内存复制到指定的缓冲区中,而真正的共享内存没有这种开销。
Windows支持的IPC方法的完整列表在MSDN上可用;但是,如果只有两个应用程序想要共享一个内存块,那么应该使用CreateFileMapping
/MapViewOfFile
创建一个命名的内存映射文件(由分页文件支持),这应该是最直接和最快的方法。文件映射的详细信息在MSDN上的页面上有描述。
相关的Boost IPC类可以作为共享内存的薄包装,AFAIK它只封装了对相关系统特定api的调用,但最终你得到了通常指向共享内存块的指针,所以操作应该和使用本机api一样快。
因此,我建议您使用Boost。进程间,因为它是可移植的,c++友好的(它提供RAII语义),并且在创建共享内存块之后不会给您任何性能损失(它可以提供共享内存上的附加功能,但是它们都是可选的-如果您只想要共享内存,您就可以得到它)。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 有什么方法可以遍历结构吗
- 当类在C++中定义时,有什么方法可以"register"类吗?
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 使用std::函数映射对象方法
- 有符号的int和int-有没有一种方法可以在C++中区分它们
- C++从另一个类访问公共静态向量的正确方法是什么
- 第一个进程保持运行而后续进程仅传递参数的最佳 IPC 方法是什么?
- 通过IPC连接Qt4和Qt5进程的最佳方法是什么?
- 浏览器的快速 IPC 方法
- Windows 7上最快的IPC方法
- 在同一台机器上运行的Java和C++应用程序之间,IPC的最佳方法是什么
- Java和C++之间IPC的最佳方法是什么