环形缓存代码实现

/* 环形缓冲区 */
#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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值