Вот, например. util_circular_buffer.hПотокобезопасность я немного адаптировал для своих условий: чтение в одном потоке (фоновый цикл), запись в другом потоке (ISR). Просто разные указатели. RTOS предпочитаю не использовать.
Проект на github этот код-компаньон к книге Real-Time C++