Capítulo 8. Introducción y visión general
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
¿Qué hace que los sistemas distribuidos sean intrínsecamente diferentes de los sistemas de un solo nodo? Veámoslo con un ejemplo sencillo. En un programa monohilo, definimos variables y el proceso de ejecución (un conjunto de pasos).
Por ejemplo, podemos definir una variable y realizar sobre ella operaciones aritméticas sencillas:
int x = 1; x += 2; x *= 2;
Tenemos un único hilo de ejecución: declaramos una variable, la incrementamos por dos, la multiplicamos por dos y obtenemos el resultado: 6. Digamos que, en lugar de tener un único hilo de ejecución realizando estas operaciones, tenemos dos hilos que tienen acceso de lectura y escritura a la variable x.
Ejecución Concurrente
Como en cuanto se permite que dos hilos de ejecución accedan a la variable, el resultado exacto de la ejecución concurrente de los pasos es impredecible, a menos que los pasos estén sincronizados entre los hilos. En lugar de un único resultado posible, acabamos teniendo cuatro, como muestra la Figura 8-1.1
Figura 8-1. Posibles intercalaciones de ejecuciones concurrentes
-
a) x = 2, si ambos hilos leen un valor inicial, el sumador escribe su valor, pero se sobrescribe con el resultado de la multiplicación.
-
b) x = 3, si ambos hilos leen un valor ...