[发明专利]一种环形缓冲区读写方法和装置在审
| 申请号: | 202110405995.X | 申请日: | 2021-04-15 |
| 公开(公告)号: | CN113064743A | 公开(公告)日: | 2021-07-02 |
| 发明(设计)人: | 张荣晋 | 申请(专利权)人: | 张荣晋 |
| 主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F9/52;G06F12/02 |
| 代理公司: | 北京化育知识产权代理有限公司 11833 | 代理人: | 尹均利 |
| 地址: | 066000 河北省秦*** | 国省代码: | 河北;13 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 环形 缓冲区 读写 方法 装置 | ||
本申请公开了一种环形缓冲区读写方法和装置,该方法包括:获取环形缓冲区的长度N,其中,环形缓冲区的长度为N标识环形缓冲区中有N个元素,环形缓冲区的相邻元素之间的地址间隔是相同的;将环形缓冲区分为M个组,其中,M个组中的每个组中的相邻元素之间的地址间隔是相同的;M个组分别作为环形缓冲区的子环形缓冲区,每个组为一个子环形缓冲区,子环形缓冲区的数量为M个;对M个子环形缓冲区中的一个或多个进行读操作,或者进行写操作。通过本申请解决了现有技术中的环形缓冲区对于同一操作一次只能有一个用户进行从而导致读写效率低的问题,在一定程度上提高了环形缓冲区的读写效率。
技术领域
本申请涉及到软件领域,具体而言,涉及一种环形缓冲区读写方法和装置。
背景技术
在程序中(例如,通信程序),经常使用环形缓冲区作为数据结构来存放通信中发送和接收的数据。环形缓冲区是一个先进先出的循环缓冲区,可以向通信程序提供对缓冲区的互斥访问。
环形缓冲区通常有一个读指针和一个写指针。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不需要添加互斥保护机制就可以保证数据的正确性。如果有多个读写用户访问环形缓冲区,那么必须添加互斥保护机制来确保多个用户互斥访问环形缓冲区。
也就是说,对于环形缓冲区的读操作或者写操作来说,其最多有一个用户来进行,这就在一定程度上降低了读写数据的效率。
发明内容
本申请实施例提供了一种环形缓冲区读写方法和装置,以至少解决现有技术中的环形缓冲区对于同一操作一次只能有一个用户进行从而导致读写效率低的问题。
根据本申请的一个方面,提供了一种环形缓冲区读写方法,包括:获取环形缓冲区的长度N,其中,所述环形缓冲区的长度为N标识所述环形缓冲区中有N个元素,所述环形缓冲区的相邻元素之间的地址间隔是相同的;将所述环形缓冲区分为M个组,其中,所述M个组中的每个组中的相邻元素之间的地址间隔是相同的;所述M个组分别作为所述环形缓冲区的子环形缓冲区,每个组为一个子环形缓冲区,所述子环形缓冲区的数量为M个;对所述M个子环形缓冲区中的一个或多个进行读操作,或者进行写操作。
进一步地,对所述M个子环形缓冲区中的一个或多个进行读操作包括:在对所述环形缓冲区进行写操作的情况下,从所述M个子环形缓冲区中的多个子环形缓冲区进行读操作;或者,对所述M个子环形缓冲区中的一个或多个进行写操作包括:在对所述环形缓冲区进行读操作的情况下,从所述M个子环形缓冲区中的多个子环形缓冲区进行写操作。
进一步地,所述N大于等于所述M,所述N和所述M均为正整数,所述N能被所述M整除。
进一步地,每个所述子环形缓冲区中的相邻元素之间的地址间隔均相同。
进一步地,所述环形缓冲区的第p个元素的地址为:(i*p+offset)%N,其中,i为所述环形缓冲区的相邻元素之间的地址间隔,offset为第0个元素的地址,N为所述环形缓冲区的长度,%为模运算;每个所述子环形缓冲区的第p个元素的地址为:(j*p+m)%N,其中,j为所述子环形缓冲区的相邻元素之间的地址间隔,m为每个子环形缓冲区第0个元素的地址,其中,j大于i。
根据本申请的另一个方面,还提供了一种环形缓冲区读写装置,包括:获取模块,用于获取环形缓冲区的长度N,其中,所述环形缓冲区的长度为N标识所述环形缓冲区中有N个元素,所述环形缓冲区的相邻元素之间的地址间隔是相同的;划分模块,用于将所述环形缓冲区分为M个组,其中,所述M个组中的每个组中的相邻元素之间的地址间隔是相同的,所述M个组分别作为所述环形缓冲区的子环形缓冲区,每个组为一个子环形缓冲区,所述子环形缓冲区的数量为M个;读写模块,用于对所述M个子环形缓冲区中的一个或多个进行读操作,或者进行写操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于张荣晋,未经张荣晋许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110405995.X/2.html,转载请声明来源钻瓜专利网。





