Кружни бафер (енгл.circular buffer), такође познат и као прстенасти или циклични бафер је термин који означава место у меморији које се користи за чување долазних података. То је структура података фиксне дужине најчешће намењена размени података између процеса.[1]
Имплементација
Кружни бафер је дизајниран тако да омогући фиксни капацитет. Ако је капацитет попуњен, нови елемент ће бити уписан преко старог на почетак или крај бафера, зависно од тога која операција уметања елемента је коришћена. Кружни бафер алоцира меморијски простор који му је потребан само приликом креирања, експлицитног захтева за проширење капацитета или ако је неопходно да се проширењем прилагоди примењеној операцији. Постоје и реализације кружног бафера са оптимизацијом меморијског простора.
Подржан је насумични приступ итераторима, константно време операција уписа и брисања елемената са почетка или краја бафера.
Упис и читање података
Кружни бафер се састоји од поља за смештање података, које је фиксне дужине, и два показивача - једног за упис а другог за читање. Показивач за упис показује на прву слободну локацију за упис података, а показивач за испис показује на први непрочитани податак. Када показивачи дођу до краја простора предвиђеног за упис они се враћају на почетак тог поља.
Упис нових елемената:
Празан бафер
Бафер је празан када се показивач прочитаних података изједначи са показивачем учитаних података.
Пун бафер
Бафер је пун и не може да прими податке без уписа преко већ постојећих података када показивач за упис достигне вредност показивача прочитаних података, односно кад показивач направи пун круг.
Карактеристике
Подаци у кружни бафер могу бити уписивани и читани од стране већег броја процеса.
Дизајн кружног бафера је прављен тако да задовољи следеће услове: