環形緩衝區C語言實現

2021-09-08 20:10:48 字數 997 閱讀 8757

//

typedef unsigned char u8;

typedef unsigned int u32;

#define buffer_size (1024*500) //緩衝區的長度,可以修改

static u32 validlen;//已使用的資料長度

static u8* phead = null;//環形儲存區的首位址

static u8* ptail = null;//環形儲存區的結尾位址

static u8* pvalid = null;//已使用的緩衝區的首位址

static u8* pvalidtail = null;//已使用的緩衝區的尾位址

int head,tail;

/* * 初始化環形緩衝區

* 環形緩衝區這裡可以是malloc申請的記憶體,也可以是flash儲存介質

* */

//critical_section g_cs;

//handle hmutex = null;

void initringbuffer(void)

pvalid = pvalidtail = phead;

ptail = phead + buffer_size;

validlen = 0;

head=tail=0;

// initializecriticalsection(&g_cs);// 初始化臨界區

// hmutex = createmutex(null, false, null);// 建立互斥物件}/*

* function:從緩衝區內取出資料

* param :@buffer:接受讀取資料的buffer

* @len:將要讀取的資料的長度

* return :-1:沒有初始化

* >0:實際讀取的長度

* */

int readringbuff

環形緩衝區C語言實現

環形緩衝區的特性 1 先進新出 2 當緩衝區被使用完,且又有新的資料需要儲存時,丟掉歷史最久的資料,儲存最新資料 現實中的儲存介質都是線性的,因此我們需要做一下處理,才能在功能上實現環形緩衝區 演算法說明 1 phead和ptail分別是連續儲存介質的首位址和尾位址 2 ptail phead 的值...

環形緩衝區的C語言實現

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...

C 語言中實現環形緩衝區

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 cy...