[发明专利]一种基于内存池的map映射表多线程遍历方法及装置有效
申请号: | 202110429607.1 | 申请日: | 2021-04-21 |
公开(公告)号: | CN113238857B | 公开(公告)日: | 2022-10-14 |
发明(设计)人: | 刘启波;黄永;陈智亮;池仲柏;李秀海;周先冬;叶丽丽 | 申请(专利权)人: | 宜通世纪物联网研究院(广州)有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F3/06 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 常柯阳 |
地址: | 510630 广东省广州市天*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 内存 map 映射 多线程 遍历 方法 装置 | ||
1.一种基于内存池的map映射表多线程遍历方法,其特征在于,包括:
周期性建立遍历线程,所述遍历线程用于遍历存量链表,所述存量链表中包括目标单元;
识别所述目标单元的状态信息,所述状态信息包括空闲状态和非空闲状态;
根据所述目标单元的状态信息连续访问内存块的目标链表项;
根据所述目标链表项识别所述目标单元的指示标志;
根据所述指示标志获取目标实例;
将所述目标实例写入磁盘快照文件;
其中,读取数据的线程和写入数据的线程彼此分离;
所述方法还包括:
通过多个固定大小的内存块构建固定内存池;
其中,所述内存池包括存量链表和空闲链表;所述存量链表用于对新增的内存块进行管理;所述空闲链表用于对空闲的内存块进行管理;
所述目标单元包括一个布尔型stat字段、一个无符号整型index字段和两个Object实例;
其中,所述stat字段,用于表征所述目标单元的状态信息,所述状态信息包括空闲状态和非空闲状态;
所述index字段,用于表征所述目标单元使用的目标实例;
所述Object实例,用于存储不同数据类型的值;
所述方法还包括添加元素的步骤,该步骤包括:
向空闲链表申请一个块单元,将所述块单元的stat状态设置为非空闲;
对目标index字段进行奇偶判断,确定所述目标index字段的可写Object实例;
对所述可写Object实例进行赋值操作,将所述可写Object实例转变为可读Object实例;
将所述块单元的指针作为Value值插入到映射表中,构建得到一个键值对;
所述方法还包括查找和更新元素的步骤,该步骤包括:
对块单元的index值进行奇偶判断,获取所述index值指向的Object实例,得到可读实例;
对块单元的index加一后的值进行奇偶判断,获取所述index加一后指向的Object实例,得到可写实例;
所述方法还包括删除元素的步骤,该步骤包括:
在映射表中按键查找对应的值,得到目标键值对;
将所述目标键值对从所述映射表中删除;
将所述目标键值对对应的单元的stat设置为空闲状态,并将所述目标键值对对应的单元插入到空闲链表中;
所述方法还包括快照生成步骤,该步骤包括:
新建一条线程,根据新建的线程对存量链表进行遍历;
对所述存量链表中的每个块单元进行读取处理;
当所述块单元的stat为空闲状态时,则不对当前块单元进行处理;当所述块单元的stat为非空闲状态时,通过index获取当前块单元的可读实例,并将该可读实例写入到快照文件;
遍历所有存量链表完成当前数据的快照。
2.一种电子设备,其特征在于,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如权利要求1所述的方法。
3.一种计算机可读存储介质,其特征在于,所述存储介质存储有程序,所述程序被处理器执行实现如权利要求1所述的方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于宜通世纪物联网研究院(广州)有限公司,未经宜通世纪物联网研究院(广州)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110429607.1/1.html,转载请声明来源钻瓜专利网。