再看读指针左边能否放下剩余数据memcpy(m_pBuf +m_nWritePos, buf, leftcount);//写指针位置偏移,如果读指针左边的区域能放下剩余数据,就偏移到cont-leftcount位置,//否则就偏移到读指针位置,表示缓存区满了,丢弃多余数据m_nWritePos = (m_nReadPos >= count - leftcount) ?
LRU 缓存淘汰算法就是一种常用策略。LRU 的全称是 Least Recently Used,也就是说我们认为最近使用过的数据应该是是「有用的」,很久都没用过的数据应该是无用的,内存满了就优先删那些很久没用过的数据。 LRU 算法实际上是让你设计数据结构: 首先要接收一个capacity 参数作为缓存的最大容量,然后实现两个 API, ...
通讯中的收发缓冲区一般采用环形队列(或称为FIFO队列),使用环形的缓冲区可以使得读写并发执行,读进程和写进程可以采用“生产者和消费者”的模型来访问缓冲区,从而方便了缓存的使用和管理。然而,环形缓冲区的执行效率并不高,每读一个字节之前,需要判断缓冲区是否为空,并且移动尾指针时需要进行“折行处理”(即当指针...
三,定义两个数组 一个用于交给环形队列用于缓存数据 另一个交给环形队列用于记录每次缓存数据的个数 注意: u32 Managebuff[10]; 数组个数是10个,说明最多可以管理10条数据 u32 类型,说明每条数据个数最大长度是 2^32 个 四, 调用 BufferManageCreate函数 五,定义一个数组,用于提取缓存的数据 注意:提取先前存...