La asincronía , en programación informática , se refiere a la ocurrencia de eventos independientes del flujo principal del programa y a las formas de lidiar con dichos eventos. Estos pueden ser eventos "externos", como la llegada de señales , o acciones instigadas por un programa que tienen lugar simultáneamente con la ejecución del programa, sin que el programa se cuelgue a esperar resultados. [1] La entrada/salida asincrónica es un ejemplo del último caso de asincronía y permite que los programas emitan comandos a dispositivos de almacenamiento o red que atienden estas solicitudes mientras el procesador continúa ejecutando el programa. Hacerlo proporciona un grado de paralelismo . [1]
Una forma habitual de abordar la asincronía en una interfaz de programación es proporcionar subrutinas que devuelvan un futuro o una promesa que represente la operación en curso y una operación de sincronización que se bloquee hasta que se complete el futuro o la promesa. Algunos lenguajes de programación, como Cilk , tienen una sintaxis especial para expresar una llamada a un procedimiento asincrónico. [2]
Algunos ejemplos de asincronía incluyen los siguientes:
Envío de método asincrónico (AMD), un método de comunicación de datos utilizado cuando existe la necesidad de que el lado del servidor maneje una gran cantidad de solicitudes de cliente de larga duración. [3] Al utilizar el envío de método sincrónico (SMD), este escenario puede hacer que el servidor pase a un estado de ocupación no disponible, lo que da como resultado una respuesta de falla de conexión causada por un tiempo de espera de solicitud de conexión de red . El servicio de una solicitud de cliente se envía inmediatamente a un hilo disponible de un grupo de hilos y el cliente se coloca en un estado de bloqueo. Una vez completada la tarea, se notifica al servidor mediante una devolución de llamada. El servidor desbloquea al cliente y transmite la respuesta de vuelta al cliente. En caso de inanición de hilos , los clientes se bloquean esperando que los hilos estén disponibles.