¿Qué es la programación asíncrona y síncrona?

Seguro has oído hablar de la programación asíncrona y la usas indirectamente pero no tienes claros estos conceptos.

Rodríguez Patiño, Eduardo
2020-10-01 | 2,991 lecturas

En esta entrada vamos a dar una introducción a la programación asíncrona y síncrona para que se pueda entender como funcionan. Los ejemplos y explicación a dar van a ser bastantes sencillos con el fin de resolver estas dudas.

¿QUÉ ES UN PROCESO SÍNCRONO?

Por defecto nuestras aplicaciones tienen el comportamiento de ser síncrono, es decir que un proceso desencadenado no va a permitir ejecutar otro hasta que este haya finalizado. Por ende, esto genera una cola o tráfico dentro de nuestra aplicación.

Veamos un caso práctico donde los estudiantes tienen que adjuntar su comprobante de pago y registrarlo en el sistema. El flujo sería el siguiente:

  1. El estudiante adjunta su comprobante de pago.
  2. El sistema valida el comprobante.
  3. El sistema sube a su servidor el comprobante.
  4. El sistema envía notificación del pago registrado.

proceso síncrono

Este proceso actual corre por un hilo o thread de ejecución.


Todo el proceso en si demora 2.7 segundos y la tarea más pesada en procesarse es la de subir el archivo a nuestro servidor privado de almacenamiento. El tiempo de este proceso no esta mal, pero ...

¿Si tenemos 3,000 estudiantes intentando subir su comprobante al mismo tiempo?

La cola o tráfico comienza a producirse y el hilo de ejecución no será liberado para otro usuario hasta que la primera ejecución haya sido completada. En pocas palabras, el que llega primero es el primero en irse.

El proceso que más demora en este flujo es la subida a nuestro servidor privado. Por ende, a este se le suele conocer como nuestro código bloqueante debido a que genera los picos de espera.

¿QUÉ ES UN PROCESO ASÍNCRONO?

Teniendo clara la explicación anterior, la asincronidad nos va a permitir ejecutar nuestros procesos en varios hilos de ejecución o lo que se conoce como multithreading. Partiendo del caso que vimos anteriormente el bloqueo, cola o tráfico ya no va a existir porque los usuarios no van a tener que esperar a que un hilo se libere para que otro pueda entrar.

proceso asíncrono

Múltiples hilos de ejecución procesándose.

CONCLUSIONES

  • La programación síncrona se ejecuta en secuencia, hasta que una no termine la otra no comenzará.
  • Si tu código se ejecuta demasiado rápido no es necesario volverlo asíncrono. Por ejemplo, un método para pasar a mayúscula una frase.
  • La programación asíncrona soluciona el problema de bloqueos.
  • La programación asíncrona aumenta los costos de servidor. ¿Por qué?, más procesamiento de golpe.
  • La programación asíncrona no hace que nuestro código sea más rápido, sino que facilita que se pueden ejecutar varios procesos al mismo tiempo dando la sensación de ser más rápido. De todas formas te queda el trabajo de mejorar tu código bloqueante para optimizar el performance de tu proyecto.