Структура данных кольцевого буфера

#data-structures #ada

Вопрос:

Пакет GNAT.Bounded_Buffers обеспечивает простую реализацию ограниченного буфера, но, к сожалению, вставку в буферные блоки до тех пор, пока в буфере не освободится место. Мне также не хватает записи для извлечения всех данных, хранящихся в буфере одновременно.

Прежде чем я начну реализовывать свой собственный пакет кольцевого буфера с отсутствующей функциональностью, я хотел бы знать, может ли такой пакет уже быть доступен?

Комментарии:

1. Какое поведение вы хотите, когда буфер заполнен? Два варианта-блокировка записи или перезапись самых старых данных. Перезапись допустима, если вашей системе нужно только выполнить выборку буфера, а не обрабатывать каждое значение, записанное в буфер.

2. Самые старые данные в буфере должны быть перезаписаны.

3. Сколько элементов вам нужно в буфере, если вы производите выборку данных? Если вы читаете весь буфер сразу, как вы хотите указать порядок, в котором записываются данные? Я спрашиваю, потому что обнаружил, что буфер выборки с размером 1 элемент часто-это все, что нужно.

4. Возможно, вы найдете мою статью sworthodoxy.blogspot.com/2015/05/… чтобы быть чем-то полезным.

5. Кроме того, что произойдет, если вы попытаетесь прочитать из пустого буфера?