一种针对无锁链表的数据处理方法、装置、设备及介质与流程

文档序号:37348443发布日期:2024-03-18 18:25阅读:13来源:国知局
一种针对无锁链表的数据处理方法、装置、设备及介质与流程

本发明涉及信息,尤其涉及一种针对无锁链表的数据处理方法、装置、设备及介质。


背景技术:

1、目前,使用无锁哈希链表来保证数据的安全性。其中,无锁哈希链表是一种并发数据结构,用于在多线程环境下实现高效的插入、查找和删除操作,使得dns缓存无需使用显式的锁机制。然而,在并发线程同时处理节点添加与节点删除的操作中,无锁哈希链表存在线程冲突问题,导致线程安全受到挑战。


技术实现思路

1、本发明提供一种针对无锁链表的数据处理方法、装置、计算设备及存储介质,通过调整无锁链表中节点的删除操作流程,解决现有技术中并发线程存在线程冲突的问题。

2、第一方面,本发明提供一种针对无锁链表的数据处理方法,方法包括:第一线程在执行第一任务的过程中,确定无锁链表中是否存在标记为待删除状态的第一节点;待删除状态为执行第二任务的第二线程对第二任务目标节点进行标注的;第一任务用于对无锁链表进行第二节点的操作;第二任务用于对无锁链表中的第二任务目标节点进行删除操作;若存在待删除状态的第一节点,则从无锁链表中删除第一节点后,继续执行第一任务。

3、本方案从无锁链表的节点删除操作流程入手,由原先的直接修改上下游节点的指针来删除节点,调整为在对节点进行删除之前,仅先将待删除节点进行标记,在后续其他线程启动后,才对含有删除标记的待删除节点进行安全回收。通过这种方式,解决传统技术中并发线程存在线程冲突的问题。

4、可选地,确定无锁链表中是否存在标记为待删除状态的第一节点之前,还包括:第二线程标注第二任务目标节点为待删除状态后,将第二任务目标节点的标识增加至标记记录中;确定无锁链表中是否存在标记为待删除状态的第一节点,包括:第一线程确定无锁链表中标记记录指示的节点是否标记有待删除状态。

5、可选地,第二线程标注第二任务目标节点为待删除状态,包括:第二线程设置第二任务目标节点中下一指针的指示位为设定值,设定值表征为待删除状态。

6、可选地,任一线程包括临时指针,任一线程的临时指针继承在先线程的临时指针;将第二任务目标节点的标识增加至标记记录中,包括:将第二任务目标节点的标识添加至第二线程的临时指针的指向对象中。

7、可选地,第一线程在执行第一任务的过程中,确定无锁链表中是否存在标记为待删除状态的第一节点,包括:第一线程在执行第一任务的过程中,遍历无锁链表中的各节点,通过每个节点中下一指针中的指示位,确定是否存在标记为待删除状态的第一节点。

8、可选地,确定无锁链表中是否存在标记为待删除状态的第一节点,包括:第一线程通过创建的第一虚拟查找器模块,确定无锁链表中是否存在标记为待删除状态的第一节点;第二线程对第二任务目标节点进行标注,包括:第二线程通过创建的第二虚拟查找器模块,对第二任务目标节点进行标注;从无锁链表中删除第一节点,包括:第一线程通过第一虚拟查找器模块从无锁链表中删除第一节点。

9、可选地,任一虚拟查找器模块包括虚拟节点;任一虚拟节点包括当前指针以及尾部指针;第一任务用于在无锁链表的第一任务目标节点之前增加第二节点;在遍历第一任务目标节点之后,第一虚拟节点的当前指针指向第一任务目标节点的前一节点,第一虚拟节点的尾部指针指向第一任务目标节点;继续执行第一任务,包括:通过第一虚拟节点的尾部指针设置第二节点中下一指针为第一任务目标节点;通过第一虚拟节点的当前指针设置第一任务目标节点的前一节点的下一指针为第二节点。

10、可选地,通过第一虚拟查找器模块从无锁链表中删除第一节点,包括:判断第一节点是否处于静默状态;若处于静默状态,则通过第一虚拟查找器模块从无锁链表中删除第一节点。

11、可选地,判断第一节点是否处于静默状态,包括:计算各线程与第一节点的关联系数;根据第一节点的关联系数,确定第一节点是否处于静默状态。

12、第二方面,本发明提供了一种针对无锁链表的数据处理装置,该针对无锁链表的数据处理装置包括:处理单元,用于第一线程在执行第一任务的过程中,确定无锁链表中是否存在标记为待删除状态的第一节点;所述待删除状态为执行第二任务的第二线程对第二任务目标节点进行标注的;所述第一任务用于对所述无锁链表进行第二节点的操作;所述第二任务用于对所述无锁链表中的所述第二任务目标节点进行删除操作;若存在待删除状态的第一节点,则从所述无锁链表中删除所述第一节点后,继续执行所述第一任务。

13、可选地,所述处理单元,具体用于所述第二线程标注所述第二任务目标节点为待删除状态后,将所述第二任务目标节点的标识增加至标记记录中;所述第一线程确定所述无锁链表中所述标记记录指示的节点是否标记有待删除状态。

14、可选地,所述处理单元,具体用于所述第二线程设置所述第二任务目标节点中下一指针的指示位为设定值,所述设定值表征为待删除状态。

15、可选地,所述任一线程包括临时指针,任一线程的临时指针继承在先线程的临时指针;所述处理单元,具体用于将所述第二任务目标节点的标识添加至所述第二线程的临时指针的指向对象中。

16、可选地,所述处理单元,具体用于第一线程在执行第一任务的过程中,遍历无锁链表中的各节点,通过每个节点中下一指针中的指示位,确定是否存在标记为待删除状态的第一节点。

17、可选地,所述处理单元,具体用于第一线程通过创建的第一虚拟查找器模块,确定无锁链表中是否存在标记为待删除状态的第一节点;第二线程通过创建的第二虚拟查找器模块,对第二任务目标节点进行标注;第一线程通过所述第一虚拟查找器模块从所述无锁链表中删除所述第一节点。

18、可选地,任一所述虚拟查找器模块包括虚拟节点;任一所述虚拟节点包括当前指针以及尾部指针;所述第一任务用于在所述无锁链表的第一任务目标节点之前增加第二节点;在遍历所述第一任务目标节点之后,第一虚拟节点的当前指针指向第一任务目标节点的前一节点,所述第一虚拟节点的尾部指针指向第一任务目标节点;所述处理单元,具体用于通过所述第一虚拟节点的尾部指针设置所述第二节点中下一指针为所述第一任务目标节点;通过所述第一虚拟节点的当前指针设置所述第一任务目标节点的前一节点的下一指针为所述第二节点。

19、可选地,所述处理单元,具体用于判断所述第一节点是否处于静默状态;若处于静默状态,则通过所述第一虚拟查找器模块从所述无锁链表中删除所述第一节点。

20、可选地,所述处理单元,具体用于计算各线程与所述第一节点的关联系数;根据所述第一节点的关联系数,确定所述第一节点是否处于静默状态。

21、第三方面,本发明提供了一种计算设备,包括至少一个处理器以及至少一个存储器,其中,所述存储器存储有计算机程序,当所述程序被所述处理器执行时,使得所述处理器执行上述第一方面任一所述的针对无锁链表的数据处理方法。

22、第四方面,本发明还提供了一种计算机可读存储介质,所述存储介质存储有程序,当所述程序在计算机上运行时,使得计算机实现执行上述第一方面任意所述的针对无锁链表的数据处理方法。

23、上述第二方面至第四方面的有益效果,具体请参照上述第一方面中相应设计可以达到的技术效果,这里不再重复赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1