En breve,
La concurrencia significa múltiples tareas que comienzan, se ejecutan y se completan en períodos de tiempo superpuestos, sin un orden específico. El paralelismo es cuando múltiples tareas O varias partes de una tarea única se ejecutan literalmente al mismo tiempo, por ejemplo, en un procesador de múltiples núcleos.
Recuerde que la concurrencia y el paralelismo NO son lo mismo.
Diferencias entre concurrencia versus paralelismo
Ahora enumeremos las diferencias notables entre concurrencia y paralelismo.
La concurrencia es cuando dos tareas pueden comenzar, ejecutarse y completarse en períodos de tiempo superpuestos. Paralelismo es cuando las tareas se ejecutan literalmente al mismo tiempo, por ejemplo. en un procesador multinúcleo.
La concurrencia es la composición de procesos de ejecución independiente, mientras que el paralelismo es la ejecución simultánea de cálculos (posiblemente relacionados).
La concurrencia se trata de lidiar con muchas cosas a la vez. El paralelismo se trata de hacer muchas cosas a la vez.
Una aplicación puede ser concurrente, pero no paralela, lo que significa que procesa más de una tarea al mismo tiempo, pero no se ejecutan dos tareas al mismo tiempo al instante.
Una aplicación puede ser paralela, pero no concurrente, lo que significa que procesa múltiples subtareas de una tarea en una CPU de múltiples núcleos al mismo tiempo.
Una aplicación no puede ser paralela ni concurrente, lo que significa que procesa todas las tareas de una en una, secuencialmente.
Una aplicación puede ser paralela y simultánea, lo que significa que procesa múltiples tareas simultáneamente en una CPU de múltiples núcleos al mismo tiempo.
Concurrencia
La concurrencia es esencialmente aplicable cuando hablamos de un mínimo de dos tareas o más. Cuando una aplicación es capaz de ejecutar dos tareas prácticamente al mismo tiempo, la llamamos aplicación concurrente. Aunque aquí las tareas se ejecutan simultáneamente, pero esencialmente NO PUEDEN. Aprovechan la función de corte de tiempo de CPU del sistema operativo donde cada tarea ejecuta parte de su tarea y luego pasa al estado de espera. Cuando la primera tarea está en estado de espera, la CPU se asigna a la segunda tarea para completar su parte.
El sistema operativo basado en la prioridad de las tareas, por lo tanto, asigna CPU y otros recursos informáticos, por ejemplo, memoria; paso a paso a todas las tareas y darles la oportunidad de completar. Para el usuario final, parece que todas las tareas se ejecutan en paralelo. Esto se llama concurrencia.
Paralelismo
El paralelismo no requiere dos tareas para existir. Literalmente, ejecuta físicamente partes de tareas O tareas múltiples, al mismo tiempo, utilizando la infraestructura de múltiples núcleos de la CPU, asignando un núcleo a cada tarea o subtarea.
El paralelismo requiere hardware con múltiples unidades de procesamiento, esencialmente. En CPU de un solo núcleo, puede obtener concurrencia pero NO paralelismo.
Métodos asincrónicos
Esto no está relacionado con la concurrencia y el paralelismo, la asincronía se usa para presentar la impresión de tareas simultáneas o paralelas, pero efectivamente, una llamada al método asincrónico se usa normalmente para un proceso que necesita trabajar fuera de la aplicación actual y no queremos Espere y bloquee nuestra aplicación esperando la respuesta.