Цитата(zltigo @ Oct 13 2006, 13:58)

В расхождение старших (маскируемых) битов полного 'указателя' отражает
и факт переполнения и количество потерянных буферов/байтов.
Для контроля переполнения обязательно использовать и младшие биты, т.е. разность индексов головы и хвоста!
Иначе контроль не переполнения, а разбега в +/-размер буфера.
Если равны - хорошо
Если отличаются на единицу (в смысле старшие биты без младших) - то возможно переполнение
Если отличаются более чем на единицу - то точно переполнение
Цитата(zltigo @ Oct 13 2006, 13:58)

Причем это может быть проконтролировано в любой момент времени а не только в момент занесения, как в случае принудительного зацикливания.
Если у Вас процессы занесения и вытаскивания както синхронизированны, то между ними в любой момент контролировать может и получится.
Если эти процессы полностью асинхронные, то в моменты контроля всё может быть хорошо, но между ними переполнение и соответственно искажение данных на выходе.
Ну и по всей видимости так (бесконтрольно) можно поступать там где выгребание из FIFO гарантированно быстрей чем засовывание туда.
Цитата(zltigo @ Oct 13 2006, 13:58)

Странно, Вы написали 'кучу' строчек в стиле
"А я что то всегда их циклю.." а тут одна :-)
Под циклю я понимал то, что у меня старшие биты индексов всегда нулевые.
И Ваш вариант их использования мне понравился, но только в плане количественной оценки прошедших через FIFO данных. Потому я и спросил, вдруг ещё чего я не увидел.
PS Впрочем это всё уже оффтопик.