[发明专利]一种将队列读写管理整合的软件实现方法有效
申请号: | 202110517809.1 | 申请日: | 2021-05-12 |
公开(公告)号: | CN113190353B | 公开(公告)日: | 2023-07-18 |
发明(设计)人: | 朱晓李;葛长恩 | 申请(专利权)人: | 北京睿芯高通量科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 北京科龙寰宇知识产权代理有限责任公司 11139 | 代理人: | 孙皓晨 |
地址: | 102600 北京市大兴区北京经济技*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 队列 读写 管理 整合 软件 实现 方法 | ||
1.一种将队列读写管理整合的软件实现方法,其特征在于,将多种队列操作整合到一个模块中,包括以下步骤:
步骤1:封装一个统一调用接口,用于内存空间的开辟和管理,其中,所述统一调用接口的函数包括创建函数、读取函数、写入函数、销毁函数和获取信息函数;
步骤2:任一业务第一次调用创建函数时,创建一个对应的句柄作为该业务的总入口,并根据需求创建对应业务的内存队列,所述内存队列中包含多个内存节点,所有内存节点均由一链表统一管理,其中,每个内存节点包含节点名称信息,所述句柄包括链表信息和内存属性记录信息,其中:
所述内存属性记录信息包括节点类型、任一内存节点的使用情况和使用者的用户信息;
所述链表信息包括所有内存节点数目的记录、链表头互斥锁、任一内存节点的节点名称信息、节点编号信息、使用对应节点的用户信息和对应节点的节点入口句柄信息,其中,所述所有内存节点数目的记录和所述链表头互斥锁设置在链表头中,所述互斥锁用于在增加或删除链表管理对象时锁定链表;
步骤3:当任一使用者使用内存时,先调用创建函数,然后通过使用者所在业务的对应句柄查找其所要使用的内存节点的节点名称,
如果所要使用的内存节点存在,则按照节点类型对应的方式使用对应内存节点,并将使用者的用户信息记录到链表中;
如果所要使用的内存节点不存在,则根据使用者的需求创建新的内存节点。
2.根据权利要求1所述的实现方法,其特征在于,步骤2中任一业务的对应句柄在创建好后,读取函数、写入函数、销毁函数和获取信息函数均以这个句柄作为入参。
3.根据权利要求1所述的实现方法,其特征在于,步骤2中的链表将链表头和多个内存节点作为链表的管理对象进行管理。
4.根据权利要求1所述的实现方法,其特征在于,步骤3中使用者使用对应内存节点具体为对所述内存节点进行读操作或写操作。
5.根据权利要求1所述的实现方法,其特征在于,步骤3中所述节点类型包括普通节点、FIFO节点和环形节点。
6.根据权利要求5所述的实现方法,其特征在于,所述普通节点包括多个小内存块,每个小内存块根据使用情况分别放入空队列和满队列,其中,所述空队列为存放写入数据小内存块的队列,所述满队列为存放已经写入数据等待被读取的小内存块的队列,初始时两个队列均为空,不同使用者对普通队列使用的具体过程为:
写操作使用者的使用过程为:
步骤311:写操作使用者调用读取函数,并通过节点入口句柄从空队列中获取小内存块;
步骤312:写操作使用者向获取的小内存块中写入数据;
步骤313:写操作使用者通过写入函数将写入数据的小内存块放入满队列;
读操作使用者的使用过程为:
步骤321:读操作使用者调用读取函数,并通过节点入口句柄从满队列中获取小内存块;
步骤322:读操作使用者从获取的小内存块中读取数据;
步骤323:读操作使用者通过写入函数将读取完成后的小内存块放入空队列;
其中,当多个读操作使用者和多个写操作使用者同时使用时,多个写操作使用者分别获取其所需的小内存块写入,多个读操作使用者分别读取其所需的小内存块。
7.根据权利要求5所述的实现方法,其特征在于,所述FIFO节点包括一整块内存块,所述内存块按照字节被使用者读取或写入,读取和写入按照顺序以队列形式进行,具体为:
写操作使用者的使用过程为:写操作使用者根据写标志通过读取函数获取指定空间,然后将数据写入指定空间,写入完成后通过写入函数释放对应空间并重置写标志;
读操作使用者的使用过程为:
步骤331:每个读操作使用者先在链表中注册其使用对应节点的用户信息;
步骤332:不同属性的读操作使用者同时通过读取函数读取数据;
步骤333:读操作使用者读取完成后通过写入函数释放对应空间,并更新写标志;
其中,FIFO节点允许多个读操作使用者同时读取,但只允许一个写操作使用者执行写入操作。
8.根据权利要求5所述的实现方法,其特征在于,所述环形节点的内存空间为一段首尾相接的空间,环形节点的内存空间按照字节被使用者读取或写入,其包括front变量和rear变量,front变量为保存队头的位置,rear变量为保存即将入队的位置,初始化状态时front变量=rear变量=0,不同使用者使用环形节点的具体过程为:
步骤341:设环形节点的大小为maxSize,写操作使用者通过读取函数读取数据时,指定其获取的空间大小为size1,则其入队位置为(rear+size1)%maxSize,其中,%表示取余数;
步骤342:写操作使用者写入数据后通过写入函数释放对应空间,同时查看是否有读操作使用者,如果有则向读操作使用者发出信号;
步骤343:当任一读操作使用者通过读取函数读取数据时,指定其获取的空间大小为size2,对应读操作使用者查看是否有数据,如果没有数据则继续等待;如果有数据,则设置标志位表示内存被读取中,此时,其他读操作使用者也以同样的方式同时读取;
步骤344:当对应读操作使用者读取完成后,通过写入函数释放对应空间,最后一个读操作使用者释放空间时,环形节点的队头位置为(front+size2)%maxSize,其中,%表示取余数;
其中,环形节点允许多个读操作使用者同时读取,但只允许一个写操作使用者执行写入操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京睿芯高通量科技有限公司,未经北京睿芯高通量科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110517809.1/1.html,转载请声明来源钻瓜专利网。