環形緩衝區的建立

2021-09-27 10:45:09 字數 841 閱讀 6191

建立例項

//建立環形快取區

///#define rbuff_set_len 8 //快取最大長度設定

typedef struct

ringbuf_st;

ringbuf_st ringbuf;//建立乙個ringbuf的緩衝區

//void ringbuff_init(ringbuf_st *ringbuf_me)//初始化相關資訊

///unsigned char ringbuff_write(ringbuf_st *ringbuf_me,unsigned char writedata)//往環中寫入乙個資料

ringbuf_me->rbuf[ringbuf_me->tailpos++]=writedata;

ringbuf_me->tailpos %= rbuff_set_len;//防止越界非法訪問//限制在乙個rbuff_set_len長度內

ringbuf_me->len++;

return 1;//寫入成功

}///

unsigned char ringbuff_read(ringbuf_st *ringbuf_me,unsigned char *readdata)//從環中讀取乙個資料

*readdata = ringbuf_me->rbuf[ringbuf_me->headpos++];//先進先出fifo,從緩衝區頭出

ringbuf_me->headpos %= rbuff_set_len;//防止越界非法訪問

ringbuf_me->len--;

return 1;//讀取成功

}

環形緩衝區

include include include include include define buffsize 1024 1024 define min x,y x y x y pthread mutex t lock pthread mutex initializer struct cycle b...

環形緩衝區

define print buf size 16 1024 static char g pcnetprintbuf 環形緩衝區的首位址 static int g ireadpos 0 環形緩衝區讀的位置 static int g iwritepos 0 環形緩衝區寫的位置 intinit 判斷環形緩...

環形緩衝區

環形緩衝區要維護兩個索引,分別對應寫入端 w 和讀取端 r 寫入 push 的時候,先確保環沒滿,然後把資料複製到 w 所對應的元素,最後 w 指向下乙個元素 讀取 pop 的時候,先確保環沒空,然後返回 r 對應的元素,最後 r 指向下乙個元素。上述的操作並不複雜,不過有乙個小小的麻煩 空環和滿環...