Для кольцевых буферов я лично использую два индекса - один индекс для чтения, другой для записи. Ну и счетчик еще. Счетчик индицирует количество элементов в буфере. При записи сначала происходит запись в буфер, затем инкремент индекса, затем инкремент счетчика. При чтении - сначала извлечение из буфера, затем декремент счетчика, затем инкремент индекса. Естественно при изменениях и индексы и значение счетчика каждый раз проверяются на выход за границы диапазона буфера.
|