Lessico IT › Programmazione › Buffer circolare

Buffer circolare

Programmazione Svenska → Aggiornato: 2026-11-02

Una coda in un blocco di memoria di dimensione fissa, in cui i puntatori di lettura e scrittura si inseguono lungo un cerchio.

Il buffer è un semplice array; quando un puntatore raggiunge la fine, riparte dall'inizio. Nessuna allocazione, nessuno spostamento di dati, tempo costante in ingresso e in uscita. È perciò la scelta predefinita nel firmware, dove un interrupt della UART deposita i caratteri e il ciclo principale li preleva con i suoi tempi.

Con esattamente un produttore e un consumatore non serve alcun lock: l'interrupt tocca solo l'indice di scrittura, il ciclo solo quello di lettura. Le dimensioni sono di solito potenze di due, così il ritorno a capo è una economica maschera di bit invece di una divisione. Resta l'eterna ambiguità tra pieno e vuoto — in entrambi i casi i puntatori coincidono — risolta sacrificando una posizione o tenendo un contatore separato. Lo stesso principio alimenta i driver di rete di Linux, le API audio e io_uring.

← Torna al lessico