[发明专利]一种适用于期望链接的双链表保护方法及装置在审
申请号: | 201811391957.8 | 申请日: | 2018-11-21 |
公开(公告)号: | CN109543429A | 公开(公告)日: | 2019-03-29 |
发明(设计)人: | 李萌 | 申请(专利权)人: | 武汉思普崚技术有限公司 |
主分类号: | G06F21/60 | 分类号: | G06F21/60 |
代理公司: | 北京弘权知识产权代理事务所(普通合伙) 11363 | 代理人: | 逯长明;许伟群 |
地址: | 430070 湖北省武汉市东湖新技术开发*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 加锁 链表 链接 预置 全局锁 双链 期望 嵌套 指令 待处理数据 规则限制 计算能力 链表更新 表更新 接收链 死锁 申请 更新 冲突 | ||
本申请实施例示出一种适用于期望链接的双链表保护方法及装置,所述方法包括:将期望链接的全局锁,拆分为普通锁,以及,hash锁,接收链表更新指令;根据所述链表更新指令对应待处理数据的类型,确定目标预置加锁规则;根据所述目标预置加锁规则,更新链表。可见本申请实施例示出的技术方案将一把全局锁拆分成多个普通锁和hash锁,对两个链表使用不同的锁进行保护,普通链表使用各自的普通锁,hash链表使用hash锁。并且为了解决使用不同锁保护时出现的锁嵌套死锁问题,通过预置加锁规则限制了加锁的先后顺序。在多个用户同时修改链表的环境下,能够充分利用各CPU的计算能力,降低锁冲突引起的等待,使程序有更好的性能,弥补了现有方式的不足。
技术领域
本发明涉及计算机技术领域,特别涉及一种适用于期望链接的双链表保护方法及装置。
背景技术
ftp下载的过程中,因为ftp区分控制链接和数据链接,控制链接是由内网PC主动向外网的ftp服务器发起,数据链接可以是由外网的ftp服务器发起。因为在防火墙的存在,设备上会默认屏蔽外网主动发起的链接,所以设备需要解析控制链接的内容得到数据链接的特征,然后在收到外网主动发起的链接后,确定此链接是否存在匹配期望的数据链接的特征,如果存在,则对链接正常转发,否则才丢弃。为了提高匹配的效率,通常设备上需要创建一个期望链接的数据结构,此数据结构由控制链接触创建,通常此数据结构中会包含两个链表:一个hash链表一个普通链表。hash链表用于根据数据链接的特征能够快速查找到对应的期望链接,因为期望链接在创建时,先根据数据链接的特征hash计算一个索引值,再将此期望链接插入到索引值对应的链表上,这样在查找时,无需匹配所有期望链接,只需对相同索引值的部分期望链接进行比对。普通链表用于记录期望链接是属于哪条控制链接。为了确保期望链接的有效性,需要实时的更新所述期望链接的链表,所述更新包括:链表节点的增加,删除,以及,替换。
链表节点的增加或删除需要修改本节点的指针域和前、后节点的指针域,以确保各节点的指针域中记录的都是相邻节点。但本节点、前节点、后节点的指针域无法同时完成更新。在并发环境下,线程A正在增删节点M修改指针域时,若有线程B要增删节点M的前、后节点,很容易出现指针域被错误赋值的现象,导致节点指针域记录的不是相邻节点而是已删除节点或者其它节点,链表中各节点就不再连续,出现异常。所以在并发环境情况下,需要添加保护机制来避免链表增加或删除节点时的指针域异常。
通常采用锁保护的方法来避免指针域异常的问题的出现,现有技术示出两种锁保护的方案。方式一使用一把全局锁,在所有增删改查期望链接节点前进行加锁,在执行完毕后进行解锁。来避免多个线程同时增删同一个链表,指针域异常问题的出现。
方式二使用全局锁和RCU结合的方式,在增删改期望链接节点前进行加锁,在执行完毕后进行解锁;在查找使用期望链接节点时无需加锁,而是通过RCU的机制进行保护。
以方式一进行保护时,受锁保护限制,并发环境下在同一时刻只有一个线程被允许对期望链接进行增删改查的操作。随着硬件水平发展,CPU核数线程数越来越多,但受限于同一时刻只有一个线程被允许操作期望链接,程序性能将无法随着线程数的增长而提高。
以方式二进行保护时,在增删改期望链接节点不频繁时,加锁频率不高,程序性能可以随着线程数的增长而提高。但在复杂的大流量网络环境中,会有频繁的期望链接节点变更,从而出现大量锁冲突引起程序性能下降。
发明内容
本发明的发明目的在于提供一种适用于期望链接的双链表保护方法及装置,以解现有技术锁保护的方法存在的技术问题。
本申请实施例第一方面示出一种适用于期望链接的双链表保护方法,所述方法包括:
将期望链接的全局锁,拆分为普通锁,以及,hash锁,接收链表更新指令;
根据所述链表更新指令对应待处理数据的类型,确定目标预置加锁规则;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉思普崚技术有限公司,未经武汉思普崚技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811391957.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种车载通讯信息系统终端
- 下一篇:一种用户用电隐私保护方法