Capítulo 6. Cuestiones de concurrencia
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
Voy a empezar este capítulo con una frase que suena un poco mística: sin mutación de estado, podemos ignorar el tiempo.
Desgranemos esto. En primer lugar, ¿qué tiene que ver el tiempo con la mutación de estado, o con la programación en realidad? El tiempo entra en la programación cuando tenemos un conjunto de procesos que deben ejecutarse en un orden determinado.
Consideremos el siguiente ejemplo.1 Considera dos funciones. La primera lleva x ax + 1. La segunda lleva x a x × x. Pongamos x a 10. Ahora imaginemos que se ejecutan estas dos funciones en paralelo. ¿Cuál sería la respuesta? ¿Te sorprendería que hubiera cinco posibles respuestas correctas? Desglosemos esto. P1 = x → x × x y P2 = x → x + 1:
-
Si P1 pone x a 100 y luego P2 pone 100 a 101, obtenemos 101.
-
Si P2 pone x a 11 y luego P1 pone 11 a 121, obtenemos 121.
-
P2 cambia 10 por 11 entre las dos veces que P1 accede al valor de x durante la evaluación de x × x. En este caso, obtenemos 110.
-
P2 accede a x. Luego P1 fija x en 100. Luego P2 fija x. Esto da 10.
-
P1 accede a x dos veces. Luego P2 pone x a 11. Luego P1 fija x. Esto da 100.
¿Cuál es la respuesta correcta? ¿101, 121, 110, 10 o 100? Bueno, eso depende de lo que pretendiera el programador. La cuestión es que si dejamos que P1 y P2 se ejecuten en paralelo, no podemos estar seguros de qué respuesta se obtendrá. ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access