建立例項
//建立環形快取區
///#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 指向下乙個元素。上述的操作並不複雜,不過有乙個小小的麻煩 空環和滿環...