• 15、如何在共享内存上使用STL标准库?


    1) 想像一下把STL容器,例如map, vector, list等等,放入共享内存中,IPC一旦有了这些强大的通用数据 结构做辅助,无疑进程间通信的能力一下子强大了很多。

    我们没必要再为共享内存设计其他额外的数据结构,另外,STL的高度可扩展性将为IPC所驱使。STL容 器被良好的封装,默认情况下有它们自己的内存管理方案。

    当一个元素被插入到一个STL列表(list)中时,列表容器自动为其分配内存,保存数据。考虑到要将STL 容器放到共享内存中,而容器却自己在堆上分配内存。

    一个最笨拙的办法是在堆上构造STL容器,然后把容器复制到共享内存,并且确保所有容器的内部分配 的内存指向共享内存中的相应区域,这基本是个不可能完成的任务。

    2) 假设进程A在共享内存中放入了数个容器,进程B如何找到这些容器呢?

    一个方法就是进程A把容器放在共享内存中的确定地址上(fixed offsets),则进程B可以从该已知地址 上获取容器。另外一个改进点的办法是,进程A先在共享内存某块确定地址上放置一个map容器,然后 进程A再创建其他容器,然后给其取个名字和地址一并保存到这个map容器里。

    进程B知道如何获取该保存了地址映射的map容器,然后同样再根据名字取得其他容器的地址。

  • 相关阅读:
    C# 自定义文件图标 双击启动 (修改注册表)
    C/S打包 客户端/windows程序 InstallShield
    WPF 依赖属性
    WPF 自定义Expander
    WPF DevExpress ChartControl用法
    WPF 水平进度条
    WPF 自定义CheckBox
    WPF 自定义ListBox
    WPF 绕圈进度条(一)
    1.为什么要用泛型
  • 原文地址:https://www.cnblogs.com/crbhf/p/15070313.html
Copyright © 2020-2023  润新知