[发明专利]无锁化的数据结构构建方法和写入数据、读取数据的方法有效
申请号: | 201910253786.0 | 申请日: | 2019-03-30 |
公开(公告)号: | CN110134439B | 公开(公告)日: | 2021-09-28 |
发明(设计)人: | 刘靖非 | 申请(专利权)人: | 北京百卓网络技术有限公司 |
主分类号: | G06F9/38 | 分类号: | G06F9/38 |
代理公司: | 北京集智东方知识产权代理有限公司 11578 | 代理人: | 陈亚斌;关兆辉 |
地址: | 100095 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 无锁化 数据结构 构建 方法 写入 数据 读取 | ||
本申请提供一种无锁化的数据结构构建方法和写入数据、读取数据的方法,该构建方法包括:设置数据队列,所述数据队列包括队列体;将所述队列体划分为依序连续排列的多个队列元素,按照队列元素进入队列体的时间顺序采用数字序号依次记录各队列元素;根据位于所述队列体头部的队列元素的数字序号生成向所述队列体写入数据的生产者的生产进度游标;根据位于所述队列体尾部的队列元素的数字序号生成从所述队列体读取数据的消费者的消费进度游标。该构建方法构建的数据队列,数据处理速度快,有利于提升计算机性能。
技术领域
本申请涉及数据处理领域,尤其涉及一种无锁化的数据结构构建方法和写入数据、读取数据的方法。
背景技术
计算机需要处理大量的数据,如何有效的实现存储和组织数据是一个重要的问题。
为提高对数据的处理速度,可采用多线程技术对数据进行并发操作(例如,写入数据和读取数据等),为保证并发操作时数据的安全性和有效性,通常需要依赖于各种锁操作,例如,在存在大量的对数据的并发读写访问请求时,使用互斥锁来保证数据的一致性。但是使用大量的锁操作,可能会引发线程停止或者休眠,因此造成对数据访问请求的延迟,降低数据处理速度。
因此,如何提高存在多个并发访问请求时,对数据的处理速度是需要解决的问题。
发明内容
有鉴于此,本申请提供一种无锁化的数据结构构建方法和写入数据、读取数据的方法,以提高数据的处理速度。
第一方面,本发明提供一种无锁化的数据结构构建方法,所述方法包括:
设置数据队列,所述数据队列包括队列体;
将所述队列体划分为依序连续排列的多个队列元素,按照队列元素进入队列体的时间顺序采用数字序号依次记录各队列元素;
根据位于所述队列体头部的队列元素的数字序号生成向所述队列体写入数据的生产者的生产进度游标;
根据位于所述队列体尾部的队列元素的数字序号生成从所述队列体读取数据的消费者的消费进度游标。
根据权利要求1所述的方法,其特征在于,所述生产进度游标包括生产者游标序号,所述根据位于所述队列体头部的队列元素的数字序号生成向所述队列体写入数据的生产者的生产进度游标,包括:
将确定出的位于所述队列体头部的队列元素的数字序号作为生产者游标序号;
所述消费进度游标包括消费者游标序号,所述根据位于所述队列体尾部的队列元素的数字序号生成从所述队列体读取数据的消费者的消费进度游标,包括:
根将确定出的位于所述队列体尾部的队列元素的数字序号作为消费者游标序号。
可选的,该方法还包括:
创建队列内存文件,所述队列内存文件包括所述数据队列的所述队列体和各所述队列元素;
创建游标内存文件,所述游标内存文件包括生产进度游标和消费进度游标。
可选的,所述数字序号采用设定位的二进制无符号整数数值表示。
可选的,所述数据队列还包括队列头,所述队列元素包括队列元素头和队列元素体;
所述队列头包括以下字段:用于标识所述数据队列格式的版本号、各所述队列元素头的长度和各所述队列元素体的长度和所述队列体包含队列元素的总数量;
所述队列元素头包括以下字段:所述数据队列的实际长度、表示各所述队列元素生成时间的时间戳和各所述队列元素的数字序号。
第二方面,本发明提供一种向数据队列写入数据的方法,所述数据队列为根据上述任一方法所述的数据结构构建的方法构建的数据队列;该向数据队列写入数据的方法包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京百卓网络技术有限公司,未经北京百卓网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910253786.0/2.html,转载请声明来源钻瓜专利网。