🎯 Ring Buffer 視覺化
0
/ 8 項目
寫入指標
讀取指標
有資料
點擊「寫入」或「讀取」來操作環形緩衝區
📚 什麼是 Ring Buffer?
🎯 核心概念
Ring Buffer(環形緩衝區)是一種固定大小的資料結構, 當寫入到尾端時會繞回到開頭繼續寫入,形成一個「環」。
⚡ 為什麼用它?
- ✓ 固定記憶體:不需要動態分配,避免記憶體碎片
- ✓ O(1) 操作:讀寫都是常數時間
- ✓ 生產者-消費者:完美處理不同速度的資料流
💡 常見應用
UART 接收緩衝 音訊串流 網路封包 日誌記錄 鍵盤輸入
// 簡化程式碼
write_idx = (write_idx + 1) % SIZE;
read_idx = (read_idx + 1) % SIZE;
// 透過取餘數實現「環繞」效果
📊 協議比較表
| 協議 | 線數 | 同步/非同步 | 速度 | 拓撲 | 典型應用 |
|---|---|---|---|---|---|
| UART | 2 | 非同步 | ~1 Mbps | 點對點 | Debug, GPS, 藍牙 |
| I2C | 2 | 同步 | ~3.4 Mbps | 多從設備 | 感測器, EEPROM |
| SPI | 4+ | 同步 | ~50 Mbps | 多從設備 | Flash, 螢幕, SD卡 |
| I2S | 3 | 同步 | ~12 Mbps | 點對點 | 音訊 DAC/ADC |
| USB | 4 | 同步 | ~20 Gbps | 星狀/樹狀 | 幾乎所有外設 |