Я хочу простой класс, который реализует кольцевой буфер фиксированного размера. Это должно быть эффективно, легко для глаз, типично напечатано.
На данный момент он не должен быть МТ-способным. Я всегда могу добавить блокировку позже, это не будет высокий параллелизм в любом случае.
Методы должны быть: .Add()
и, я думаю, .List()
, где я получаю все записи. Во-вторых, поиск, я думаю, должен быть сделан с помощью индексатора. В любой момент я захочу получить любой элемент в буфере по индексу. Но имейте в виду, что от одного момента к следующему элемент [n] может отличаться, так как круговой буфер заполняется и переворачивается. Это не стек, это круговой буфер.
Что касается "переполнения": я ожидал бы, что внутри будет массив, содержащий элементы, и со временем голова и хвост буфера будут вращаться вокруг этого фиксированного массива. Но это должно быть невидимым для пользователя. Не должно быть обнаруживаемого извне события или поведения "переполнения".
Это не школьное задание - чаще всего оно будет использоваться для кэша MRU или журнала транзакций или событий фиксированного размера.