zoukankan      html  css  js  c++  java
  • 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#函数复习
    ADO数据库访问类查询、属性扩展
    ADO.NET完整的删除与修改, 实体类和数据访问类
    ADO.NET增删改查
    类库、委托
    多态
    面向对象:封装、继承
    面向对象思想:对象和类
    sql 存储过程、事务、视图、触发器
    连接查询,结构、循环语句
  • 原文地址:https://www.cnblogs.com/crbhf/p/15070313.html
Copyright © 2011-2022 走看看