¿Cuál es la diferencia entre punto muerto y bloqueo vivo?

Resuelto macindows asked hace 13 años • 7 respuestas

¿Alguien puede explicar con ejemplos (de código) cuál es la diferencia entre interbloqueo y bloqueo activo ?

macindows avatar May 28 '11 00:05 macindows
Aceptado

Tomado de http://en.wikipedia.org/wiki/Deadlock :

En la computación concurrente, un punto muerto es un estado en el que cada miembro de un grupo de acciones está esperando que algún otro miembro libere un bloqueo.

Un livelock es similar a un interbloqueo, excepto que los estados de los procesos involucrados en el livelock cambian constantemente entre sí, sin que ninguno progrese. Livelock es un caso especial de escasez de recursos; la definición general sólo establece que un proceso específico no está progresando.

Un ejemplo del mundo real de livelock ocurre cuando dos personas se encuentran en un pasillo estrecho, y cada una intenta ser educada haciéndose a un lado para dejar pasar a la otra, pero terminan balanceándose de un lado a otro sin lograr ningún progreso porque ambos se mueven repetidamente. de la misma manera al mismo tiempo.

Livelock es un riesgo con algunos algoritmos que detectan y se recuperan del punto muerto. Si más de un proceso toma acción, el algoritmo de detección de interbloqueo se puede activar repetidamente. Esto se puede evitar asegurándose de que sólo un proceso (elegido al azar o por prioridad) tome acción.

mah avatar May 27 '2011 17:05 mah

bloqueo vivo

Un hilo a menudo actúa en respuesta a la acción de otro hilo. Si la acción del otro hilo también es una respuesta a la acción de otro hilo, entonces puede resultar en livelock.

Al igual que con el punto muerto, los subprocesos bloqueados no pueden avanzar más . Sin embargo, los hilos no están bloqueados : simplemente están demasiado ocupados respondiéndose entre sí para reanudar el trabajo . Esto es comparable a dos personas que intentan cruzarse en un pasillo: Alphonse se mueve hacia la izquierda para dejar pasar a Gaston, mientras que Gaston se mueve hacia la derecha para dejar pasar a Alphonse. Al ver que todavía se están bloqueando, Alphonse se mueve hacia la derecha, mientras que Gaston se mueve hacia la izquierda. Todavía se están bloqueando entre sí, y así sucesivamente...

La principal diferencia entre livelock y deadlock es que los subprocesos no se bloquearán, sino que intentarán responder entre sí continuamente.

En esta imagen, ambos círculos (hilos o procesos) intentarán darle espacio al otro moviéndose hacia la izquierda y hacia la derecha. Pero no pueden avanzar más.

ingrese la descripción de la imagen aquí

Bruce avatar Jan 17 '2015 06:01 Bruce