[发明专利]一种队列数据控制方法、系统及队列数据结构有效
申请号: | 202110921877.4 | 申请日: | 2021-08-12 |
公开(公告)号: | CN113377549B | 公开(公告)日: | 2021-12-07 |
发明(设计)人: | 张宙;阮涛;左海波;梁猛;郦建新;张扬 | 申请(专利权)人: | 浙江齐安信息科技有限公司 |
主分类号: | G06F9/52 | 分类号: | G06F9/52;G06F9/38 |
代理公司: | 杭州钤韬知识产权代理事务所(普通合伙) 33329 | 代理人: | 赵杰香;唐灵 |
地址: | 315300 浙江省宁波市*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 队列 数据 控制 方法 系统 数据结构 | ||
1.一种队列数据控制方法,其特征在于:
建立有若干循环队列,每一个循环队列包括有指向所述循环队列的操作地址的队头指针以及队尾指针;
设置插入失败计数器,所述插入失败计数器为长度与所述循环队列的长度相同的数组,所述插入失败计数器用于记录所述循环队列的任意地址中插入元素失败事件;
设置取出失败计数器,所述取出失败计数器为长度与所述循环队列的长度相同的数组,所述取出失败计数器用于记录所述循环队列的任意地址中取出元素失败事件;
设置基于互斥锁原理的插入失败计数器操作锁和取出失败计数器操作锁;
其中,所述循环队列包括第一地址,所述第一地址与插入失败计数器中的第一映射地址存在映射关系,所述第一地址与所述取出失败计数器中的第二映射地址存在映射关系;
当对所述循环队列进行入队操作时,生产者线程发起第一数据存储请求,获取队尾指针,检查所述第二映射地址中是否有取出元素失败事件记录,若存在记录,则锁定所述取出失败计数器操作锁,删除所述取出元素失败事件的记录后释放所述取出失败计数器操作锁,并重新获取队尾指针;
当所述第二映射地址中元素的值等于初始值时,检查所述循环队列的第一地址中的元素是否为空;
响应于所述循环队列的第一地址中的元素为空,通过CAS操作增加所述队尾指针的值,并通过CAS操作将所述第一数据存储请求中的元素插入至所述循环队列的第一地址,当插入失败时,锁定所述插入失败计数器操作锁,改写所述第一映射地址中元素的初始值并释放所述插入失败计数器操作锁,重新获取队尾指针;
当对所述循环队列进行出队操作时,消费者线程发起第一数据取出请求,获取队头指针,检查所述第一映射地址中是否有插入元素失败事件记录,若存在记录,则锁定所述插入失败计数器操作锁,删除所述插入元素失败事件的记录后释放所述插入失败计数器操作锁,并重新获取队头指针;
当所述第一映射地址中元素的值等于初始值时,检查所述循环队列的第一地址中的元素是否为空;
响应于所述循环队列的第一地址中的元素为非空,通过CAS操作增加所述队头指针的值,并通过CAS操作将所述第一地址中的元素取出,取出失败时,锁定取出失败计数器操作锁,改写第二映射地址中的元素的初始值并释放取出失败计数器操作锁,重新获取队头指针。
2.根据权利要求1所述的队列数据控制方法,其特征在于:通过所述插入失败计数器记录所述循环队列的任意地址中插入元素失败事件,所述循环队列的地址与所述插入失败计数器的地址存在映射关系,所述第一映射地址中的元素设置有初始值,当所述第一地址插入元素失败时,所述第一映射地址中元素的值被改写;
通过所述取出失败计数器记录所述循环队列的任意地址中取出元素失败事件,所述循环队列的地址与所述取出失败计数器的地址存在映射关系,所述第二映射地址中的元素设置有初始值,当所述第一地址取出元素失败时,所述第二映射地址中元素的值被改写。
3.根据权利要求2所述的队列数据控制方法,其特征在于,当对所述循环队列进行入队操作时,所述方法包括如下步骤:
当通过CAS操作增加所述队尾指针的值失败时,重新获取所述队尾指针;
响应于所述循环队列的第一地址中的元素为非空,检查入队操作是否阻塞,当所述入队操作阻塞时,重新获取所述队尾指针;
当所述入队操作非阻塞时,重新检查所述循环队列的第一地址中的元素是否为空,响应于所述循环队列的第一地址中的元素为空,通过CAS操作增加所述队尾指针的值,并通过CAS操作将所述第一数据存储请求中的元素插入至所述循环队列的第一地址。
4.根据权利要求3所述的队列数据控制方法,其特征在于,所述方法还包括步骤:
检查所述第二映射地址中元素的值,当所述第二映射地址中元素的值不等于初始值时,锁定所述取出失败计数器操作锁并再次确认所述第二映射地址中元素的值,当确认所述第二映射地址中元素的值不等于初始值时,通过CAS操作增加所述队尾指针的值;
当CAS操作增加所述队尾指针的值成功时,将所述第二映射地址中元素的值改写为初始值,并释放所述取出失败计数器操作锁,重新获取队尾指针;
当CAS操作增加所述队尾指针的值失败时,释放所述取出失败计数器操作锁并重新获取所述队尾指针。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江齐安信息科技有限公司,未经浙江齐安信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110921877.4/1.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置