循環(huán)緩存區(qū)的實(shí)現(xiàn)原理

經(jīng)常會(huì)設(shè)置一個(gè)數(shù)組之類的用來存儲(chǔ)臨時(shí)接受的數(shù)據(jù),由于數(shù)據(jù)是臨時(shí)的,具有不確定性,隨機(jī)性,如果沒及時(shí)讀取,會(huì)造成數(shù)據(jù)丟失,對(duì)工程的運(yùn)行不利。

我們?nèi)绾谓⒁粋€(gè)循環(huán)的buf,當(dāng)有新數(shù)據(jù),存儲(chǔ)在最新的位置,以便訪問。

首先我們假設(shè)開辟一個(gè)10*32大小的數(shù)組a[10][32],假設(shè)我們的數(shù)據(jù)沒次是32個(gè)byte,那我們可以存10組數(shù)據(jù),當(dāng)然越大越好,但一般小型處理器沒有那么多可操作空間。

我們?cè)俣x一個(gè)wp變量,代表新數(shù)據(jù)的變量,即為每增加一組數(shù)據(jù),wp 加1。

這樣我們的數(shù)組便知道存儲(chǔ)的空間占了多少,還余多少。

每次存新的數(shù)據(jù)位置在&a[wp][0]。

然后我們?cè)谠O(shè)置一個(gè)訪問變量 rp,用來讀取之前存儲(chǔ)的數(shù)據(jù)。每訪問一次rp 加1.

每次訪問的地址位置&a[rp][0]。

當(dāng)沒有新數(shù)據(jù)wp停止更新,等到rp=wp,代表所有數(shù)據(jù)讀取完成。

當(dāng)wp=10,預(yù)先設(shè)定的數(shù)組滿了,再往下存就溢出了,此時(shí)就要從頭開始存儲(chǔ)到a[0][0]的位置。

對(duì)于訪問也是一樣當(dāng)rp=10,也要返回來訪問,不然訪問的位置也不是我們存數(shù)據(jù)的位置了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容