[发明专利]一种实现环形缓冲区的方法、装置及数字电视接收终端无效
申请号: | 201010042859.0 | 申请日: | 2010-01-19 |
公开(公告)号: | CN101800867A | 公开(公告)日: | 2010-08-11 |
发明(设计)人: | 喻欣 | 申请(专利权)人: | 深圳市同洲电子股份有限公司 |
主分类号: | H04N5/44 | 分类号: | H04N5/44;G06F3/06 |
代理公司: | 广州三环专利代理有限公司 44202 | 代理人: | 郝传鑫;潘中毅 |
地址: | 518129 广东省深*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 环形 缓冲区 方法 装置 数字 电视接收 终端 | ||
技术领域
本发明涉及电子通信领域,尤其涉及一种实现环形缓冲区的方法及装置。
背景技术
环形缓冲区是一种最常用的数据结构,在某些限制条件在是一种免锁的数据结构。且环形缓冲区实现简单,性能很高,应用非常广泛。
现有技术中,对环形缓冲区的使用主要有两种方式,一种是预留一个空间不用,用来区分空和满两种状态,比如某个环形缓冲区大小为N,写指针为W,读指针为R,则此缓冲区最多只能放N-1个消息,缓冲区为空的条件为W等于R,缓冲区为满的条件为(W+1)%N等于H,此方法有个不足的地方是会浪费一个消息空间,当消息比较大时会造成空间的浪费。另外一种使用环形缓冲区的方式是用一个计数器C来表示缓冲区的消息数,计数器C的初始值为0,当写线程写入一个消息时,计数器C增加1,当读线程读取一个消息时,计数器C减去1,当使用计数器来表示当前可用消息数时,此环形缓冲区的所有单元都可以用来存放消息,比如大小为N的缓冲区可以存放N个消息。但因为读写线程都会修改计数器C,所以对计数器C的修改需要加互斥保护。这样就降低了性能。
发明内容
本发明实施例所要解决的技术问题在于,提供一种实现环形缓冲区的方法及装置。可实现环形缓冲区的最大利用率。
为了解决上述技术问题,本发明实施例提供了一种实现环形缓冲区的方法,包括:
预设所述环形缓冲区的最大存储值和最大读写指针值;
当读取数据时,判断环形缓冲区当前读指针的数值是否等于当前写指针的数值,
判断为是时,返回空,
判断为否时,读取所述环形缓冲区当前读指针与最大存储值取余后的指针所指向存储空间内的数据,实施读取操作后将所述当前读指针的数值加一,再判断所述加一之后的读指针的数值是否溢出,判断为否时,返回好,判断为是时,修正所述读指针为最大读写指针值与最大存储值取余后再加一,然后返回好;
写入数据时,当所述环形缓冲区当前写指针的数值大于所述当前读指针的数值,将所述环形缓冲区当前写指针的数值与所述当前读指针的数值相减,判断所述相减之后的差值是否小于所述环形缓冲区的最大存储值,
判断为是时,将所述数据写入所述环形缓冲区当前写指针与最大存储值取余后的指针所指向的存储空间,实施写入操作后将所述当前写指针的数值加一,再判断所述加一之后的写指针的数值是否溢出,判断为否时,返回好,判断为是时,修正所述写指针为最大读写指针值与最大存储值取余后再加一,然后返回好,
判断为否时,返回满。
相应地,本发明实施例提供了一种实现环形缓冲区的装置,包括:
预设单元,用于预设所述环形缓冲区的最大存储值和最大读写指针值;
第一判断单元,用于当读取数据时,判断环形缓冲区当前读指针的数值是否等于当前写指针的数值,
写入数据时,当所述环形缓冲区当前写指针的数值大于所述当前读指针的数值,将所述环形缓冲区当前写指针的数值与所述当前读指针的数值相减,判断所述相减之后的差值是否小于所述环形缓冲区的最大存储值;
执行单元,用于读取数据时,当所述第一判断单元判断为是时,返回空,判断为否时,读取所述环形缓冲区当前读指针与最大存储值取余后的指针所指向存储空间内的数据,实施读取操作后将所述当前读指针的数值加一,
写入数据时,当所述第一判断单元判断为是时,将所述数据写入所述环形缓冲区当前写指针与最大存储值取余后的指针所指向的存储空间,实施写入操作后将所述当前写指针的数值加一,判断为否时,返回满;
第二判断单元,用于实施读取操作并将所述当前读指针的数值加一后判断所述读指针的数值是否溢出,判断为否时,返回好,判断为是时,修正所述读指针为最大读写指针值与最大存储值取余后再加一,然后返回好,
或实施写入操作并将所述当前写指针的数值加一后判断所述写指针的数值是否溢出,判断为否时,返回好,判断为是时,修正所述写指针为最大读写指针值与最大存储值取余后再加一,然后返回好。
本发明实施例还提供了一种数字电视接收终端,包括:上述实现环形缓冲区的装置。
实施本发明实施例,具有如下有益效果:
实施本发明,可在实现环形缓冲区时不需另设空余消息空间以区别环形缓冲区空或满的情况,最大化的利用了环形缓冲区的消息空间,也不需要另设计数器来记录环形缓冲区的消息数,从而避免了系统性能的降低。
附图说明
图1是本发明一种实现环形缓冲区的方法的一实施例的流程示意图;
图2是本发明一种实现环形缓冲区的方法的一实施例中读取数据时的流程示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市同洲电子股份有限公司,未经深圳市同洲电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010042859.0/2.html,转载请声明来源钻瓜专利网。