Im Idealfall sollte ein thread-safer Ringbuffer lock-free sein und nicht einfach stumpf ne CS oder sowas nutzen.
Ich denke ab mehr als einem Thread, der Daten schreibt oder liest wird es sich nicht vermeiden lassen mit CS zu arbeiten. Zumindest bei jedem schreibenden Zugriff auf die Positionszeiger.
Aber selbst dann können sich Fehler ergeben wenn ein Positionszeiger von mehr als einem Thread zur gleichen Zeit gelesen wird, dann würden all diese Threads auf die gleichen Datenzelle lesend oder schreibend zugreifen.
Ich kann mir nicht vorstellen wie man das ohne CS lösen kann.