回環緩衝區實現

2022-06-16 23:57:07 字數 704 閱讀 3772

回環緩衝區就是迴圈佇列,可以通過陣列實現也可以通過鍊錶實現。

基於陣列的回環緩衝區實現

1:有乙個head指標始終指向隊首元素,有乙個rear指標始終指向隊尾元素的下乙個單元。

2:佇列容量時maxlen,最大元素長度時maxlen-1。

3:head=read時表示佇列空,(rear+1)%maxlen=head時表示佇列滿,使用乙個空的元素單元來實現佇列滿。

4:佇列元素長度計算:(rear-head+maxlen)%maxlen

5:佇列剩餘空間計算: maxlen-(rear-head+maxlen)%maxlen-1

6:也可以通過變數方式維護佇列中元素個數,這樣可以避免求模操作。

**解析

/*如果不滿一圈則直接儲存*/

if ((countof(pringbuf->ringbuf) - pringbuf->tail) >= pringbuf->aframelen[pringbuf->framenum])

}/*滿了一圈則分成兩部分儲存*/

else

/*如果不滿一圈則直接讀取*/

if ((countof(pringbuf->ringbuf) - pringbuf->head) >= pringbuf->aframelen[0])

}/*滿了一圈則分成兩部分讀取*/

else

輸入緩衝區與輸出緩衝區

本博文通過一段程式來理解輸入緩衝區與輸出緩衝區。程式如下 author wanghao created time thu 17 may 2018 06 03 12 ampdt file name test.c description include int main int argc,const c...

環形緩衝區的實現

乙個簡單的環形緩衝區,沒有寫加解鎖的部分,用於多執行緒的話還是自己加吧.pragma once include stdio.h include stdlib.h include memory.h namespace linker ring bool put elementtype e else bo...

使用者程序緩衝區和核心緩衝區

常常聽到有程式設計師會跟你討論 我們在讀寫檔案的時候,系統是有快取的 但實際上有一部分人把使用者程序緩衝區和系統空間的緩衝區的概念混淆了,包括這兩種緩衝區的用法和所要解決的問題,還有其它類似的概念。本文就來區分一下不同的緩衝區概念 主要針對類unix平台 使用者程序和作業系統的關係 首先我用一張圖來...