Der Ringpuffer ist ein FIFO-artiger Datenspeicher, der meist ein Datenfeld fester Größe benutzt. Dadurch benötigen zeitkritische Abläufe, keinen Zugriff auf die Speicherverwaltung. Ringpuffer werden gerne, bei Audiotreibern, Eventsystemen oder zum Datenaustausch zwischen zwei nebenläufigen Prozessen benutzt.
Beispiel (Quellcode): ringbuffer.cpp
Download (Quellcode): ringbuffer.zip
Beschreibung
Durch zwei Zähler werden die Lese- und Schreibposition dargestellt. Wird ein Element ausgelesen, wird die Leseposition erhöht. Beim Hinzufügen eines Elements, erhöht sich die Schreibposition. Beim Erreichen des Datenfeldlimits, wird die Position auf den Anfang des Feldes zurückgesetzt. Alternativ kann auch ein Modulo oder eine andere Operation sicherstellen, dass die Position innerhalb des Datenfelds liegt und fortlaufend ist. Sind beide Positionen gleich, ist das Feld leer. Wären nach dem nächsten Hinzufügen beide Position gleich, ist das Feld voll.
Zum Austausch zwischen zwei Prozessen, bei denen einer der Daten…