Las colas son una de las estructuras de datos más usadas en informática, y en código de un solo hilo su implementación resulta trivial: basta con std::queue en C++. La complejidad surge al pasar a entornos multihilo, donde varios hilos compiten por los mismos elementos y, si no se sincronizan correctamente, se producen comportamientos indefinidos por lecturas y escrituras simultáneas. Para la mayoría de aplicaciones, proteger una cola con un std::mutex es suficiente; sin embargo, en sistemas de alta frecuencia como motores de videojuegos en tiempo real, pipelines de síntesis de audio, sistemas de ingesta masiva de datos o motores de trading, el coste del bloqueo se vuelve inaceptable. Cada vez que un mutex está ocupado, el sistema operativo realiza un cambio de contexto, que cuesta microsegundos frente a los nanosegundos de una operación de cola, consumiendo la mayor parte del presupuesto de CPU en mover hilos en el kernel. La programación lock-free propone reemplazar el bloqueo pesimista por reintentos optimistas mediante operaciones atómicas sobre memoria compartida, de modo que los hilos que no progresan reintentan en un bucle ajustado en lugar de dormir. Este artículo, escrito por el desarrollador Jaysmito101, parte de una implementación básica con std::mutex llamada SimpleQueue como línea base y avanza hacia una cola lock-free que escala de forma más lineal con el número de hilos. El autor comparte el código en un gist y su integración en el proyecto Xlux, un renderizador por software que optimiza el trabajo multihilo de CPU. Aunque el contenido es técnico y divulgativo, está dirigido a programadores C++ con interés en concurrencia de bajo nivel y optimización de rendimiento.
