Condición de carrera

Condición de carrera o condición de secuencia (del inglés race condition) es una expresión usada en electrónica y en programación.

Cuando la salida o estado de un proceso es dependiente de una secuencia de eventos que se ejecutan en orden arbitrario y van a trabajar sobre un mismo recurso compartido, se puede producir un error cuando dichos eventos no llegan (se ejecutan) en el orden que el programador esperaba.

El término se origina por la similitud de dos procesos compitiendo en carrera por llegar antes que el otro, de manera que el estado y la salida del sistema dependerán de cuál llegó antes, pudiendo provocarse inconsistencias y comportamientos impredecibles y no compatibles con un sistema determinista.

En determinados escenarios, la gran velocidad de ejecución de un hilo no es suficiente para garantizar que operaciones concurrentes den resultados esperados.

De igual forma, dos personas ingresando y retirando efectivo a la vez de una misma cuenta bancaria podrían ver su saldo incrementado o por el contrario su ingreso realizado pero no materializado en saldo disponible.

Condición de carrera en un circuito lógico. ∆ t 1 y ∆ t 2 representan el retardo de propagación de los elementos lógicos. Cuando el valor de entrada ( A ) cambia, el circuito genera en la salida un pico de duración (∆ t 1 + ∆ t 2 ) − ∆ t 2 = ∆ t 1 .