1. Inicio
  2. Diferencias
  3. Síncrono y asíncrono

Diferencia entre síncrono y asíncrono

Tema: tecnología.

Un proceso síncrono espera a que una tarea termine y devuelva su resultado antes de continuar con la siguiente instrucción, y un proceso asíncrono lanza la tarea y sigue ejecutando otras instrucciones sin detenerse a esperar su respuesta.

Para recordarlo: lo síncrono es como hacer una llamada telefónica y esperar en línea hasta que contesten, y lo asíncrono es como enviar un mensaje y seguir con otras cosas hasta recibir la respuesta.

Tabla comparativa: síncrono y asíncrono

SíncronoAsíncrono
Qué esEjecución que espera el resultado antes de seguir.Ejecución que continúa sin esperar el resultado.
Orden de ejecuciónEstrictamente secuencial.Puede completarse en un orden distinto al de inicio.
BloqueoBloquea el programa hasta obtener respuesta.No bloquea; el programa sigue con otras tareas.
Complejidad del códigoMás sencilla de leer y seguir.Requiere gestionar cuándo llega cada respuesta.
EjemploLeer un archivo y esperar a que termine para continuar.Pedir datos a un servidor mientras la interfaz sigue respondiendo.

Qué es síncrono

Una operación síncrona detiene la ejecución del programa hasta que la tarea solicitada termina y entrega su resultado; solo entonces continúa con la siguiente instrucción. Esta forma de trabajar resulta muy fácil de leer y de predecir, porque las instrucciones se ejecutan exactamente en el orden en que se escribieron, una detrás de otra.

Su principal limitación aparece cuando la tarea tarda en responder: mientras dura la espera, el programa queda bloqueado, sin poder atender ninguna otra cosa, algo especialmente problemático en aplicaciones que deben seguir respondiendo a la persona usuaria.

Qué es asíncrono

Una operación asíncrona lanza una tarea y, sin esperar a que termine, continúa ejecutando el resto del programa; cuando la tarea finalmente concluye, notifica su resultado y el programa lo procesa en ese momento, sin haber quedado bloqueado mientras tanto. Esto permite que un programa siga siendo receptivo, por ejemplo continuando la interacción con quien lo usa, mientras espera datos que tardan en llegar.

A cambio de esa capacidad de no bloquearse, el código asíncrono resulta algo más complejo de escribir y de seguir, porque el orden en que terminan las tareas puede no coincidir con el orden en que se iniciaron.

Ejemplos que muestran la diferencia

Una aplicación que descarga datos de forma síncrona se queda congelada, sin responder a ningún clic, hasta que termina la descarga.

Esa misma descarga hecha de forma asíncrona permite seguir navegando por la aplicación mientras los datos llegan en segundo plano.

Un script que lee un archivo de forma síncrona bloquea el resto del programa; leerlo de forma asíncrona permite que el programa siga atendiendo otras peticiones mientras la lectura se completa.

Cuándo usar cada término

Preguntas frecuentes

¿Por qué se usa tanto la programación asíncrona en aplicaciones web?

Porque muchas de sus tareas, como pedir datos a un servidor, tardan un tiempo variable en completarse; hacerlas de forma asíncrona evita que la aplicación se quede congelada mientras espera esa respuesta.

¿El código asíncrono es siempre mejor que el síncrono?

No siempre: para tareas rápidas y sencillas, el código síncrono es más fácil de escribir, leer y depurar; el asíncrono aporta ventajas reales sobre todo cuando hay esperas que, de otro modo, bloquearían el programa.

¿Qué significa que una función asíncrona «no bloquea»?

Significa que el programa no se detiene a esperar el resultado de esa función: sigue ejecutando otras instrucciones y solo procesa el resultado cuando la tarea asíncrona finalmente lo entrega.

Ver también