[发明专利]缓冲区循环读写方法及装置有效
申请号: | 201110104720.9 | 申请日: | 2011-04-18 |
公开(公告)号: | CN102169420A | 公开(公告)日: | 2011-08-31 |
发明(设计)人: | 邓世华 | 申请(专利权)人: | 杭州海康威视系统技术有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/08 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 谢安昆;宋志强 |
地址: | 310012*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 缓冲区 循环 读写 方法 装置 | ||
技术领域
本发明涉及存储技术领域,特别涉及一种缓冲区循环读写方法及装置。
背景技术
目前,在使用缓冲区做数据读写时,一般都会用一定的方式,实现缓冲区的循环读写。具体步骤如下:
先为程序分配一块固定大小的内存,例如用pBufferBeginPtr来标志该块内存的起始地址,然后定义两个指针对象m_pReadPtr和pWritePtr;m_pReadPtr用来标志缓冲区读数据的位置,m_pWritePtr用来标志和缓冲区写的位置。
写数据时,先将数据组合成分隔符+数据长度+数据的格式,例如用pData标志组合后的数据(pData的数据长度为nDataLen),然后判断缓冲区剩余空间是否能够存放pData数据,若不够,则丢弃该块数据,或采用等待的方式,等有空间后再将该段pData数据拷贝至缓冲区;若空间足够,则直接将pData从m_pWritePtr位置开始拷贝,同时将m_pWritePtr的位置向后移动个单位。在遇到缓冲区末端空间不够时(假设此时缓冲区末端剩余的空间单位为nLeftLen),现有的循环读写方法一般有两种处理方式:
写方式1:先将部分数据拷贝至缓冲区末端(此时将剩余nDataLen-nLeftLen的数据),然后将剩余部分从缓冲区起始位置开始拷贝,同时将m_pWritePtr的位置移动pBufferBeginPtr+(nDataLen-nLeftLen)的位置;
写方式2:将数据直接从缓冲区开始位置拷贝,将末端这些空间浪费掉,同时将m_pWritePtr的位置移动pBufferBeginPtr+nDataLen的位置。
读数据时,先判断缓冲区是否有可读数据,若无,则直接返回;若存在可读数据,则先从m_pReadPtr开始,通过分隔符搜索有效数据的位置,找到后,计算出需要读取的数据长度,例如用aDataLen表示,然后再根据数据长度读取剩余的数据。
针对上述两种写数据方式,在读数据时,分别采用如下方式:
若采用写方式1,那么在计算aDataLen时,需要先判断数据是如何存放的,如果数据的一部分字节存放在缓冲区末端,一部分字节存放在缓冲区起始位置,那么计算aDataLen时需要先将这两部分字节组合起来,然后根据组合后的字节计算长度,这种方式在计算aDataLen时比较繁琐,不够简便。
若采用写方式2,那么当读到缓冲区末端时,由于存在一些无效数据,在搜索有效数据时,要将末端整个无效数据搜索一遍,才会从缓冲区开始位置搜索,这个过程会浪费掉一部分搜索时间,降低了数据读取的速度。
发明内容
本发明实施例提供一种缓冲区循环读写方法,能够在保证读数据的操作简便的同时,提高读数据的速度。
本发明实施例提供一种缓冲区循环读写装置,能够在保证读数据的操作简便的同时,提高读数据的速度。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种缓冲区循环读写方法,该方法包括:
向缓冲区写数据时,若缓冲区末端空间不够存放完整的当前待写入数据,则从缓冲区开始位置写入待写入数据,并在缓冲区上一个数据的末尾处进行标记;
从缓冲区读数据时,若读地址指针指向所述标记,则直接从缓冲区开始位置搜索有效数据位置,并进行后续读取数据的操作。
较佳地,所述在缓冲区上一个数据的末尾处进行标记,包括:
令无效地址指针等于当前写地址指针,以所述无效地址指针为标记。
较佳地,所述若读地址指针指向所述标记,则直接从缓冲区开始位置搜索有效数据位置,包括:
判断读地址指针是否等于所述无效地址指针,如果是,则令读地址指针指向缓冲区开始位置,令无效地址指针指向缓冲区末尾位置,同时修改轮差值为假;
根据所述读地址指针从缓冲区开始位置通过搜索分隔符搜索有效数据位置。
较佳地,所述通过搜索分隔符搜索有效数据位置,包括:
分别判断读地址指针位置,读地址指针+1位置,读地址指针+2位置及读地址指针+3位置是否为分隔符“$”,如果读地址指针位置,读地址指针+1位置,读地址指针+2位置及读地址指针+3位置均为分隔符“$”,则认为搜索到有效数据,否则认为没有搜索到有效数据。
较佳地,所述后续读取数据操作包括:
若没有搜索到有效数据,则判断读地址指针与写地址指针是否相同,如果相同,则结束流程,否则令读地址指针等于写地址指针,修改轮差值为假,并结束流程。
一种缓冲区循环读写装置,该装置包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州海康威视系统技术有限公司,未经杭州海康威视系统技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110104720.9/2.html,转载请声明来源钻瓜专利网。