¿Que es la concurrencia y paralelismo? | Jose Luis Bugarin

¿Que es la concurrencia y paralelismo?

Siempre usamos la palabra concurrencia para referirnos a una cantidad determinada de usuarios que usan una aplicación al mismo tiempo. ¿Por que deberíamos estudiar y conocer sobre concurrencia?

Comenzare con una definición simple:

Cuando las cosas suceden al mismo tiempo, decimos que suceden simultáneamente

cuando un programa/aplicación se ejecuta simultáneamente, estamos hablando de programación concurrente. Se usa el termino de programación paralela como sinónimo de programación concurrente.

Para aplicar a un ejemplo real, usare el trafico (y la ciudad de Lima que es una de las de mayores tráficos del mundo):

Digamos que hay una cierta cantidad de automóviles que circulan por una carretera de varios carriles (La av, Javier Prado). Sin embargo, en el mismo carril, los autos deben seguir a otros autos, los que ya están delante de ellos. Un carril de carretera, en este caso, es un recurso para ser compartido.

Sin embargo, cuando se construye un peaje, las cosas cambian. Cada automóvil se detiene en su carril durante uno o dos minutos para pagar el peaje y recoger un recibo. Mientras el operador de peaje está ocupado con el automóvil, otros automóviles que están detrás de él deben hacer cola y esperar. Sin embargo, una plaza de peaje tiene más de una puerta de pago. Hay asistentes en cada puerta, atendiendo diferentes autos al mismo tiempo. Si hay tres asistentes, cada uno sirviendo una puerta, entonces tres autos podrían pagar el peaje en el mismo momento; es decir, pueden recibir servicio en paralelo.

La concurrencia impulsa el definir arquitecturas que permitan soportar cargas dependiendo de los casos de uso.

Existen dos enfoques relacionados a los recursos de RAM, PROCESADOR y DISCO:

  • escalamiento vertical
  • escalamiento horizontal

Los relacionados a programación que te recomiendo revisar son:

  • Event Driven Architecture (EDA): es un estilo de programación en el que el código se ejecuta en respuesta a un evento, como presionar una tecla o hacer clic con el mouse. En resumen, el flujo de un programa es impulsado por eventos.
  • Reactive programming: es un paradigma de programación. Una hoja de cálculo es un excelente ejemplo de una aplicación reactiva. Si establecemos una fórmula y cambiamos cualquier valor de columna, el programa de hoja de cálculo reacciona y calcula las nuevas columnas de resultados. Este paradigma de programación se basa en message driven architecture.

Nuevos paradigmas, nuevas formas de construir aplicaciones concurrentes y transaccionales.

Añadir un comentario

Tu dirección de correo electrónico no será publicada.