Condición de carrera

Una condición de carrera ocurre cuando un programa de software depende del momento en que se ejecutan uno o más procesos para funcionar correctamente. Si un hilo se ejecuta o termina en un momento inesperado, puede causar un comportamiento impredecible, como resultados incorrectos o un interbloqueo del programa.

La mayoría de los programas de software son multihilo, lo que significa que pueden procesar varios hilos a la vez. Una aplicación bien programada se asegurará de que los resultados de cada hilo se procesen en el orden esperado. Si un programa depende de hilos que se ejecutan en una secuencia impredecible, puede producirse una condición de carrera.

Un ejemplo sencillo es una puerta lógica que gestiona valores booleanos. La puerta lógica AND tiene dos entradas y una salida. Si las entradas A y B son verdaderas, la puerta AND produce VERDADERO. Si una o ambas entradas son falsas, produce FALSO. Puede producirse una condición de carrera si un programa comprueba el resultado de la puerta lógica antes de que se carguen las variables A y B. El proceso correcto sería:

  1. Cargar la variable A
  2. Cargar la variable B
  3. Comprobar el resultado de la puerta lógica AND

Una secuencia incorrecta sería:

  1. Cargar la variable A
  2. Comprobar el resultado de la puerta lógica AND
  3. Cargar la variable B

El resultado del segundo ejemplo anterior puede ser igual o no al del primer ejemplo. Por ejemplo, la variable B puede ser FALSA antes y después de cargarse, lo que no cambiaría el resultado. Si A es FALSA, no importa si B es VERDADERA o FALSA. Sin embargo, si A y B son verdaderas, el resultado debería ser VERDADERO. Cargar la variable B después de comprobar el resultado de la puerta lógica produciría un resultado incorrecto de FALSO.

El resultado incoherente producido por las condiciones de carrera puede causar errores difíciles de detectar. Los programadores pueden evitar estos problemas asegurándose de que los hilos se procesen en una secuencia coherente.

Actualizado January 24, 2020 por Per C.

quizPon a prueba tu conocimiento

Which of the following is not a stage of the System Development Lifecycle?

A
Planning
0%
B
Building
0%
C
Compiling
0%
D
Testing
0%
Correct! Incorrect!     View the SDLC definition.
More Quizzes →

El diccionario informático Tech Terms

La definición de Condición de carrera en esta página es una definición original escrita por los autores de TechTerms.com. Si desea hacer referencia a esta página o citar esta definición, utilice la barra de cita verde directamente debajo de la definición.

Nuestro objetivo es explicar la terminología informática de manera sencilla y comprensible. Nos esforzamos por la precisión y la claridad en cada definición que publicamos. Si tiene comentarios o desea sugerir un nuevo término técnico, contáctenos.

El boletín de Tech Terms

¡Mejora tu conocimiento técnico con nuestro boletín diario o semanal! Suscríbete hoy y recibe nuevos términos y cuestionarios en tu bandeja de entrada.

Suscríbase al boletín gratuito de TechTerms

¿Con qué frecuencia desea recibir un correo?

Puede cancelar su suscripción o cambiar la frecuencia en cualquier momento usando los enlaces disponibles en cada correo. ¿Preguntas? Contáctenos.

Nota: El boletín se envía en inglés.