迴圈緩衝區的C語言實現

2021-06-28 14:43:25 字數 1659 閱讀 5587

******************************=   部落格點滴積累,部分話語和知識點**於網路,感謝網路資源的提供者*****=

迴圈緩衝區對流資料非同步處理有相當大的優勢,c語言

實現迴圈緩衝區,當緩衝區滿時,資料將拋棄,不覆蓋。**如下:

#define  buf_size  1024

int fifo_arr[buf_size] = {}; 

unsigned int readops = 0;

unsigned int writeops = 0;

unsigned int empty = 0;

unsigned int full = 0;

/** 初始化函式,讀寫下標readops,writeops指向

* empty = 1,fifo為空;full = 0,fifo不滿

*/int init_fifo(void)

int read_fifo(int* arr,int len)

if(readlen == 0)

if(writeops > readops)

else if(writeops == readops)

else

if(readlen > can_readlen)

nextreadops = (readops + readlen)%buf_size;

if(nextreadops == (readops + readlen))

}

else

for(i = 0; i < nextreadops ; i++)

}

readops = nextreadops;

if(writeops = readops)

full = 0;  //full = 0,fifo不滿

return readlen;

}

int write_fifo(int* arr,int len)

if(writelen == 0)

if(writeops > readops)

else if(writeops == readops)

else

if(writelen > can_writelen)

nextwriteops = (writeops + writelen)%buf_size;

if(nextwriteops == (readops + writelen))

}

else

for(i = 0; i

}

writeops = nextwriteops;

if(writeops == readops)

empty = 0;//empty = 0,fifo不為空;

return writelen;

}

環形緩衝區C語言實現

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

環形緩衝區C語言實現

typedef unsigned char u8 typedef unsigned int u32 define buffer size 1024 500 緩衝區的長度,可以修改 static u32 validlen 已使用的資料長度 static u8 phead null 環形儲存區的首位址 ...

環形緩衝區的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...