Concurrencia

¿Qué es la concurrencia en programación?

En los programas hasta ahora creados, las líneas aparecen de forma secuencial. Una línea no se ejecuta hasta que la anterior se complete, lo que es un comportamiento deseado en muchos casos.

Sin embargo también podemos toparnos con casos en los cuales una actividad no bloquea otra, al menos no si el tiempo que tomará en completarse es suficiente como para generar un bloqueo significativo. Algunas de estas acciones pueden ser tareas como una solicitud de lectura desde la red o la lectura de datos desde un archivo.

Go utiliza la concurrencia, que consiste en separar múltiples tareas de forma individual sin que estas bloqueen unas a las otras. Otra aproximación de otros lenguajes es el paralelismo. La diferencia entre uno y otro es por ejemplo…

El gestor de descargas de navegador utiliza el paralelismo para descargar archivos. Tiene un límite de descargas simultaneas, pero debido a que estas no dependen las unos de las otras, cuando una descarga se completa otra mas se puede realizar, aun cuando hayan otras descargas en ejecución.

Un sistema de reservaciones de vuelos utiliza paralelismo, a diferencia de la concurrencia, requiere que se completen todas las consultas para que así se puedan mostrar todos los vuelos de las diferentes aerolíneas. Es decir, en el paralelismo al finalizar el proceso se tienen que unir todas las partes.