He visto referencias al uso de buffers de anillo y acceso controlado a los punteros de ubicación para eliminar o reducir la necesidad de bloqueos. Sin embargo, no elimina la necesidad de esperas, y solo debería funcionar, entonces un buffer de anillo tiene un escritor y un lector. En su caso, necesitaría al menos dos amortiguadores.
El mecanismo según lo entiendo es:
Dependiendo del tiempo de espera utilizado, esto puede agregar latencia para nuevos elementos en una cola vacía o quemar muchos ciclos de CPU en el ciclo de espera. El orden de actualización del puntero y la separación estricta del acceso de escritura es fundamental para que esto funcione. El escritor solo puede escribir la entrada del búfer en anillo antes de incrementar el puntero para que esté disponible para el lector.