Если это кольцевой буфер, то нет нужды каких-то блокировок или запрета прерываний, если переменные могут изменяться атомарно, т.е. для 8 бит процессора 16 бит переменные при чтении требуют таки запрета на время чтения один раз только, дальше можно работать с копией, даже если она уже не соотвествует действительности (кстати это причина, почему удобней использовать только два индекса без всяких прочих флагов и счётчиков методом "Always keep one slot open" -- обращение к каждой "лишней" переменной требует блокировки). Вообще хорошая статья:
http://en.wikipedi …ays_Keep_One_Slot_Open