[发明专利]一种队列数据控制方法、系统及队列数据结构有效
申请号: | 202110921877.4 | 申请日: | 2021-08-12 |
公开(公告)号: | CN113377549B | 公开(公告)日: | 2021-12-07 |
发明(设计)人: | 张宙;阮涛;左海波;梁猛;郦建新;张扬 | 申请(专利权)人: | 浙江齐安信息科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/38 |
代理公司: | 杭州钤韬知识产权代理事务所(普通合伙) 33329 | 代理人: | 赵杰香;唐灵 |
地址: | 315300 浙江省宁波市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 队列 数据 控制 方法 系统 数据结构 | ||
本申请公开了一种队列数据控制方法,包括:设置循环队列,循环队列包括至少一个地址,地址用于存储元素;设置插入失败计数器,用于记录循环队列中插入元素失败的地址;设置取出失败计数器,用于记录循环队列中取出元素失败的地址;设置插入失败计数器操作锁和取出失败计数器操作锁;进行入队操作时,若检查取出失败计数器中存在取出元素失败事件的记录,则锁定取出失败计数器操作锁,删除取出元素失败事件的记录后释放取出失败计数器操作锁,并重新获取队尾指针;进行出队操作时,若检查插入失败计数器中存在插入元素失败事件的记录,则锁定插入失败计数器操作锁,删除插入元素失败事件的记录后释放插入失败计数器操作锁,并重新获取队头指针。
技术领域
本申请属于计算机技术领域,尤其涉及一种队列数据控制方法、系统及队列数据结构。
背景技术
并发程序是指由若干个可同时执行的程序模块组成的程序,这种可同时执行的程序模块被称为线程。组成一个程序的多个线程可以同时在多台处理器上并发执行,也可在一台处理器上交互执行。多个线程可以通过读写共享数据区或者发消息的方式互相通信,从而相互配合完成任务。多线程的执行方式可以大大缩短程序执行的时间,提高计算机的运行效率。
然而,多线程程序中最突出的问题就是数据同步问题。多线程在访问内存变量是需要进行同步以保证逻辑的正确性。在多线程中竞争同一资源是对资源访问顺序性敏感称为竞态条件,导致竞态条件发生的代码区域称为临界区。常见的处理方法为在临界区加互斥锁、信号量等。互斥锁基本由两个原语操作组成:加锁和解锁。任何时候只有一个线程成功加锁并执行之后的程序直至该线程解锁。其余线程会不断尝试访问直至该线程被解锁。在此期间,其余线程都会被操作系统挂起并等待唤醒。
然而,多线程的初衷是为了让任务更快的并行执行,锁机制虽然可以解决多线程场景下的数据同步问题,但却会使并行转为串行,降低的任务的执行效率。在意识到锁同步机制带来的问题后,近年来业界开始对无锁数据结构进行研究。
原子操作(atomic operation)是指在该指令操作完毕之前不会被任何其它指令或时间终端打断的操作。为了保证多处理器环境中的原子性,CPU提供一系列新的指令原语,包括:原子读取(Load)、原子存储(Store)、和原子比较交换(CAS)。这些基本的原子操作时最终实现无锁数据结构的基础。
现如今,实现无锁队列的方式大致可以分为链表实现方式和数组实现方式。其中,链表实现方式为将需要放入队列的数据对象采用链表节点元素进行封装,对队头和对尾进行原子比较交换(CAS),实现消息队列更新。
无锁队列的数组实现一般采用循环数组。利用循环数组作为队列的存储空间,通过CAS操作确定位置,通过一套屏障算法,避免循环实用队列存储空间时造成同一存储位置的空间堆叠。
然而,上述无锁队列的实现方式仍旧存在一些影响性能的问题。例如,创建/回收链表节点增加了大量的内存操作,在部分语言中对垃圾收集并不友好;在生产者和消费者之间频繁交换队首和/或对尾计数信息对性能产生影响,以及,部分尾提升性能做出的调整不支持非阻塞操作。
发明内容
本申请实施例所要解决的技术问题在于,提供一种队列数据控制方法及装置,在循环数组队列的基础上,采用预锁定资源,出错回退的方式,在同时支持阻塞和非阻塞操作的前提下,解耦了生产者和消费者之间,队首及队尾计数信息的频繁传递,提升了队列系统的性能。
本申请提供一种队列数据控制方法,包括:
建立有若干循环队列,每一个循环队列包括有指向所述循环队列的操作地址的队头指针以及队尾指针;
设置插入失败计数器,所述插入失败计数器为长度与所述循环队列的长度相同的数组,所述插入失败计数器用于记录所述循环队列的任意地址中插入元素失败事件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江齐安信息科技有限公司,未经浙江齐安信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110921877.4/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置