[发明专利]一种并发哈希表的无锁操作方法在审
申请号: | 201610377615.5 | 申请日: | 2016-05-31 |
公开(公告)号: | CN106055646A | 公开(公告)日: | 2016-10-26 |
发明(设计)人: | 卫冰洁;王啸;熊刚;贺欣;石俊峥;刘培朋;李镇;周立;王秀文;贺龙涛;李晓倩;袁媛;朱佳伟;李城龙;张慧;曹首峰;于贺威;王大伟;刘阳 | 申请(专利权)人: | 国家计算机网络与信息安全管理中心 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京理工大学专利中心 11120 | 代理人: | 高燕燕 |
地址: | 100029*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 为了提升多线程对哈希表操作的高效性,本发明提供一种并发哈希表的无锁操作方法。当需要对哈希表进行插入操作时,首先构造新增的值对象,并将对象中的next指针指向键值对应的哈希槽中的指针指向的对象,同时利用原子操作将对应哈希槽中的指针指向新增的对象;当需要对哈希表进行删除操作时,利用原子操作将对应的对象从链表中移除;当需要对哈希表进行更新操作时,首先构造需要更新的对象的副本,并进行更新,同时原子地将更新后的对象插入到链表中;对于删除对象的回收,利用Hazard指针实现。 | ||
搜索关键词: | 一种 并发 哈希表 操作方法 | ||
【主权项】:
一种并发哈希表的无锁操作方法,包括插入操作、更新操作、删除操作;其特征在于,其中:插入操作具体包括如下步骤:1.1获取新插入元素键值对应的哈希槽,执行1.2;1.2获取哈希槽中存储的链表的表头,执行1.3;1.3构造新的值对象,将对象的next指针指向1.2中获得的表头对象,执行1.4;1.4利用CAS操作将哈希槽中的指针指向新建的对象;更新操作具体包括如下步骤:2.1获取需要更新的元素的键值,执行2.2;2.2获取键值对应的哈希槽中存储的链表表头,执行2.3;2.3在链表中查找对应的需要更新的对象,执行2.4;2.4构造对象的副本,并进行更新,执行2.5;2.5将更新后的对象的next指针指向原对象的next指针指向的对象,执行2.6;2.6利用原子操作将新对象插入到链表中;删除操作具体包括如下步骤:3.1获取需要删除的元素的键值,执行3.2;3.2获取键值对应的哈希槽中存储的链表表头,执行3.3;3.3在链表中查找对应的需要删除的对象,执行3.4;3.4利用原子操作将需要删除对象的前一个对象的next指针指向删除对象的下一个对象。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家计算机网络与信息安全管理中心,未经国家计算机网络与信息安全管理中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610377615.5/,转载请声明来源钻瓜专利网。
- 上一篇:一种剥岩尾矿干法脱泥方法
- 下一篇:生石灰消化、混料和除尘工艺及装置