/* 环形缓冲区 */
#define BUF_LEN 128 //环形缓存区长度
static int ring_buf[BUF_LEN]; //环形buf
static int r, w; //读写变量
#define NEXT_POS(x) ((x+1) % BUF_LEN) //取模运算,主要用于读写跳转和环形buffer满判断
/*环形buffer空判断*/
static int ring_buf_empty(void){
return (r == w);
}
/*环形buffer满判断*/
static int ring_buf_full(void) {
return (r == NEXT_POS(w));
}
/*写环形buffer,写入int val*/
static void set_ring(int val) {
if (!ring_buf_full())
{
ring_buf[w] = val;
w = NEXT_POS(w);
}
}
/*读环形bufer,读出int val*/
static int get_ring(void){
int val = 0;
if (!ring_buf_empty())
{
val= ring_buf[r];
r = NEXT_POS(r);
}
return val;
}
环形缓存代码实现
于 2023-05-09 09:42:17 首次发布