进程间:managed_windows_shared_memory与本机Windows内存映射文件一起使用

时间:2014-03-27 10:20:44

标签: windows boost shared-memory memory-mapped-files boost-interprocess

是否可以使用Boost的managed_windows_shared_memory创建一个内存段和一个对象(例如一个整数或一个字符串),另一个使用本机Windows API的客户端(即内存映射文件)访问所述内存段和对象?

客户端必须使用纯本机Windows API而不是Boost的原因是(因为我们的测试显示)客户端在使用:: find获取指向对象的指针后会因某些权限和spin_lock问题而挂起在共享内存中。我们不确定为什么会这样,但我们怀疑它与使用其他版本的Boost的客户端有关。客户端本身就是另一个专有软件的插件(使用Boost 1.4x,而我们使用的是1.55),所以使用我们自己的Boost版本重新编译所有内容(客户端和专有软件)不是一种选择。

另一方面,当客户端使用本机Windows API,并且服务器使用Boost的windows_shared_memory和map_region时,我们至少可以让它们共享一个序列化的字符串。

所以我们接下来的问题是我们是否可以让服务器使用managed_windows_shared_memory。如果我们将服务器创建的共享对象作为名称对象,那么客户端是否可以访问此共享对象?我们还需要做些什么呢?

如果这是远程可能的,我怀疑服务器需要获取共享对象地址的一些信息,并将其发送到客户端(通过消息队列或套接字)。然后,客户端可以使用此信息访问共享对象。这是一条合理的道路吗?

我刚刚开始使用Boost的IPC,所以也许有其他方法可以做到这一点。提前感谢有关如何做到的任何建议或示例;我真的很感激。

英格丽

0 个答案:

没有答案