Definición
Una condición de concurrencia en la que las tareas cambian continuamente de estado en respuesta a otras pero no logran progreso global; el sistema permanece activo pero no se completa trabajo útil.
Principio
Principio
El livelock se produce cuando los participantes reaccionan a la contención de manera que mantienen la vivacidad de los componentes (pueden cambiar de estado) pero no garantizan el progreso del sistema, frecuentemente por reintentos/respuestas simétricas o reglas de reacción excesiva.
Demostración
Demostración
Dos procesos detectan contención y ambos retroceden exactamente el mismo intervalo antes de reintentar simultáneamente, impidiendo repetidamente que cualquiera complete su operación a pesar de que hay cambios de estado continuos.
Aplicación incorrecta
Aplicación incorrecta
Llamar livelock a cualquier uso elevado de CPU o thrashing, o tratar livelock como deadlock y aplicar mecanismos de recuperación que suponen ausencia de cambios de estado.
Consecuencia
Consecuencia
Identificar correctamente un livelock conduce a mitigaciones como introducir retrocesos aleatorizados, romper la simetría, añadir equidad o forzar garantías de progreso, o limitar el comportamiento reactivo; una mala identificación puede empeorar la capacidad de respuesta.
Inversión
Inversión
El reverso es el progreso coordinado: aunque los actores cambien de estado, sus interacciones convergen hacia operaciones completadas en lugar de respuestas cíclicas sin progreso.
Límite
Límite
Se aplica cuando componentes del sistema siguen cambiando de estado sin completar objetivos. Excluye deadlock (sin cambio de estado) y simples fluctuaciones de rendimiento; puede ocurrir en enrutamiento de red, bucles de reintento o protocolos cooperativos.
Tensión semántica
Tensión semántica
Tensión con el thrashing y la espera activa: el thrashing denota desperdicio de recursos por cambios de contexto o paginación excesiva, mientras que el livelock enfatiza la no‑finalización funcional a pesar de la actividad; ambos pueden coexistir.
Síntesis
Síntesis
El livelock es una condición activa de no‑progreso generada por reglas reactivas o simetría que provocan cambios de estado repetidos sin finalizar; resolverlo exige romper la simetría, añadir aleatoriedad o imponer garantías de progreso.