【框架】共享内存组设计思路与实现(更新中)

版权声明:本文为博主原创文章,转载前请注明出处:https://www.cnblogs.com/schips/p/10677408.html。


 

背景:

  在通信场景中,存在一个进程A,专门用来处理某个设备文件的消息,并将从设备文件中读取到的信息放置到某片共享内存中,只要和其他进程约定好共享内存使用的shm_id即可。

  现在由于业务拓展,需要同时处理不同的设备文件,如果使用相同的shm_id会导致先申请内存值被后者覆盖(根本原因是由于不同的数据对象使用了同一片的内存地址,导致读写时发生了数据践踏。

 

现在提出一种解决该方法的框架:共享内存管理器。

设计:

  核心思想是在共享内存内存中设计一种公共对象,专门用于存储子shm_id。

  所有的生产者与消费者在申请自己需要使用的共享内存之前,都先在公共对象的指定区域进行查找,如果没有,则登记注册;否则直接使用(同时维护一个计数器,每当有一个新的进程使用时,计数器的值自增;当使用者退出时,计数器自减,当计数器减为0时,注销该子共享内存。)

  (相当于在酒店住房间的时候,先去前台注册;然后拿着自己的钥匙去自己的房间,当房间的最后一个人离开时,退房)

  这样,就可以保证以前的接口不会发生很大的变化就可以实现兼容。

 

 

未完待续。

 

转载于:https://www.cnblogs.com/schips/p/10677408.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值