c – 共享内存中的STL容器(Windows)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c – 共享内存中的STL容器(Windows),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1077字,纯文字阅读大概需要2分钟。
内容图文
![c – 共享内存中的STL容器(Windows)](/upload/InfoBanner/zyjiaocheng/962/dd3f73af3b9c4c56acf69cb333d67a3c.jpg)
我正在开发一个由2个进程组成的应用程序,这些进程必须共享一些数据结构.这些类组织在不同的库中,库用于不同的应用程序.
>我的第一次尝试是在Win32中使用Named Shared Memory,但问题是我不能使用STL容器.
>寻找解决方案,我找到了Boost Interprocess,如果我理解,我必须将我的类中的所有STL容器更改为“STL”Boost Interprocess容器.
那么,有没有其他方法可以使用STL共享类或结构(在Windows中)?目标是不要在我们的库中创建过多的Boost依赖.
谢谢
解决方法:
Boost.Interprocess有自己的容器类的原因是大多数当前的实现不完全支持分配器的标准.
Boost.Interprocess容器类是标准容器的完全兼容的实现,因此您可以将它们用作标准容器的插入替换,并在修复它们时切换到供应商提供的容器以支持标准分配器协议.
我不确定我是否可以比documentation更好地解释它,但最大的问题是共享内存映射到不同虚拟地址的不同进程,因此容器中使用的任何指针必须是相对指针(例如来自该部分的开头).标准分配器模型支持这一点,但容器也必须通过使用Allocator :: pointer而不是T *来支持它.修复所有实现以支持此操作后,将不再需要Boost.Interprocess容器.
或者,您可以映射内存at the same virtual address in each process;如果你这样做,那么你可以使用现有的实现容器,因为原始指针将正常工作.
内容总结
以上是互联网集市为您收集整理的c – 共享内存中的STL容器(Windows)全部内容,希望文章能够帮你解决c – 共享内存中的STL容器(Windows)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。