[发明专利]一种基于单进单出无锁队列的随机取出对象的方法有效

专利信息
申请号: 202110294432.8 申请日: 2021-03-19
公开(公告)号: CN113176896B 公开(公告)日: 2022-12-13
发明(设计)人: 陈稳 申请(专利权)人: 中盈优创资讯科技有限公司
主分类号: G06F9/38 分类号: G06F9/38
代理公司: 上海嘉蓝专利代理事务所(普通合伙) 31407 代理人: 金波
地址: 200000 上海市嘉定区安*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 单进单出无锁 队列 随机 取出 对象 方法
【权利要求书】:

1.一种基于单进单出无锁队列的随机取出对象的方法,其特征在于,该方法包括:

对size大小的对象池进行内存布局,包括:

对象池前面部分为对象指针数组p[size],后面部分为对象实体数组obj[size];

设置对象指针数组p[size]中的各个指针指向,包括:

设置对象指针数组p[size]中的各个指针,指向对象实体数组obj[size]中对应下标处的对象;

设置对象实体数组obj[size]中每个对象实体携带的隐式尾部pos指向,包括:

让对象实体数组obj[size]中每个对象实体携带一个隐式尾部pos,用于存储指向该对象的指针,在对象指针数组p[size]中的下标值,使得对象池刚建立时,形成对象指针与对象实体的相互映射关系;

将对象指针数组p[size]实现为无锁环形队列;

将对象指针数组p[size]划分为使用区间[HEAD,TAIL]和空闲区间;

消费者线程取出p[N]指向的对象N∈[HEAD,TAIL],并且在使用完毕之后释放,包括:

执行释放操作前的使用区间状态;

交换p[N]与p[TAIL]的值;

交换p[N]此时指向的对象obj[M]与p[TAIL]此时指向的对象obj[T]对象的pos值,包括:

交换p[N]此时指向的对象obj[M]与p[TAIL]此时指向的对象obj[T]的pos值,最终形成p[N]与obj[T],以及p[TAIL]与obj[M]的相互映射关系,将释放p[N]操作转换为释放p[TAIL]操作。

2.根据权利要求1所述的基于单进单出无锁队列的随机取出对象的方法,其特征在于,将对象指针数组p[size]划分为使用区间[HEAD,TAIL]和空闲区间,包括:

[HEAD,TAIL]为使用区间,指向生产者线程添加且未被消费者线程取出的对象,其余部分为空闲区间,指向空闲对象。

3.根据权利要求1所述的基于单进单出无锁队列的随机取出对象的方法,其特征在于,执行释放操作前的使用区间状态,包括:

将p[N]此时指向的对象记作obj[M],将p[TAIL]此时指向的对象记作obj[T],此时消费者线程此时只有p[N]的值,没有p[N]本身的地址,通过obj[M].pos即可获取N值。

4.根据权利要求1所述的基于单进单出无锁队列的随机取出对象的方法,其特征在于,交换p[N]与p[TAIL]的值,包括:

交换p[N]与p[TAIL]的值,使p[TAIL]指向期望释放的对象obj[M],p[N]指向p[TAIL]原本指向的对象obj[T]。

5.根据权利要求1所述的基于单进单出无锁队列的随机取出对象的方法,其特征在于,所述对象实体数组obj[size]中每个对象实体与对象指针数组p[size]中的各个指针一一映射,并且对象指针数组p[size]的使用区间是连续的。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中盈优创资讯科技有限公司,未经中盈优创资讯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202110294432.8/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top