Capítulo 2. Modelar tu código: Comunicar procesos secuenciales

Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com

La diferencia entre concurrencia y paralelismo

A menudo se pasa por alto o se malinterpreta el hecho de que la concurrencia es diferente del paralelismo. En las conversaciones entre muchos desarrolladores, ambos términos suelen utilizarse indistintamente para significar "algo que se ejecuta al mismo tiempo que otra cosa". A veces, utilizar la palabra "paralelo" en este contexto es correcto, pero normalmente, si los desarrolladores están discutiendo sobre código, en realidad deberían utilizar la palabra "concurrente".

La razón para diferenciar va mucho más allá de la pedantería. La diferencia entre concurrencia y paralelismo resulta ser una abstracción muy poderosa a la hora de modelar tu código, y Go la aprovecha al máximo. Veamos en qué se diferencian ambos conceptos para que podamos comprender la potencia de esta abstracción. Empezaremos con una sentencia muy simple:

La concurrencia es una propiedad del código; el paralelismo es una propiedad del programa en ejecución.

Es una distinción interesante. ¿No solemos pensar en estas dos cosas de la misma manera? Escribimos nuestro código para que se ejecute en paralelo. ¿Verdad?

Bien, pensemos en ello un segundo. Si escribo mi código con la intención de que dos partes del programa se ejecuten en paralelo, ¿tengo alguna garantía de que eso ocurrirá realmente ...

Get Concurrencia en Go now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.