没有内存映射文件的共享内存

时间:2010-07-29 16:51:41

标签: windows mfc

是否可以在不使用Memory mapped files的情况下在两个MFC C ++应用程序之间共享内存?目前我们正在使用这种方法来共享结构,并且它对我们的要求来说太慢了。有没有更好的办法?

2 个答案:

答案 0 :(得分:3)

你确定内存映射文件很慢吗?操作系统将同一块RAM映射到两个进程空间(当它被分页时。)性能问题的其他罪魁祸首可能是互斥和其他同步原语/易失性读取和高速缓存失效,以便在进程之间将并发更改传播到内存。

您可以尝试在本地对非共享区域进行更改,然后批量复制,而不是重复写入共享内存。

其他替代方案是消息传递,RPC或DCOM,但我怀疑它们会更高效,特别是如果传输/引用的数据量很大。

答案 1 :(得分:1)

我原以为一旦你建立了内存映射(使用MapViewOfFile),那就快了。

您的性能问题是实际设置映射内存,而不是在设置后使用它吗?

如果你确实对内存映射文件有确凿的问题,这是另一种技术:http://msdn.microsoft.com/en-us/library/h90dkhs0%28VS.80%29.aspx(DLL共享内存段),但我怀疑它真的会帮助你。