Async Flashcards
¿Cual es el problema del uso de threads?
Si una aplicación crea muchos threads, cada uno puede tener 100kb de stack y la demanda de memoria podría ser un problema.
¿Para qué sirve Async?
Sirve para intercalar tareas en un único thread o pool de threads
¿Qué es el overhead de memoria?
Uso adicional de memoria o recursos que un programa o sistema utiliza más allá de lo estrictamente necesario para realizar una tarea específica.
¿Qué son las Funciones Asincrónicas?
Las funciones asincrónicas son funciones que pueden ejecutar operaciones asincrónicas y pausar su ejecución sin bloquear el hilo principal. Esto permite la concurrencia y la ejecución eficiente de tareas en paralelo.
¿Qué son los Futures?
Los “Futures” (futuros) son abstracciones en la programación asincrónica que representan valores que pueden estar disponibles en el futuro.
Permite que el programa siga ejecutándose sin esperar el resultado inmediato de la tarea, pero proporciona mecanismos para acceder al resultado cuando esté disponible.
¿Qué son las expresiones wait?
Las expresiones “await” (esperar) se utilizan para suspender la ejecución de una función asincrónica hasta que un “Future” se complete. Esto permite esperar la finalización de operaciones asincrónicas antes de continuar con el flujo de la ejecución.
¿Qué son las tasks?
Las tareas (tasks) son unidades de trabajo en la programación asincrónica que pueden ejecutarse de manera concurrente. Son una forma de representar operaciones asincrónicas y se pueden programar para ejecutarse en paralelo.
¿Que es el tipo ‘Pin’?
El tipo “Pin” se utiliza en la programación asincrónica para marcar ciertos datos como “pinneables”. Esto ayuda a garantizar que los datos no se muevan en la memoria mientras se ejecutan operaciones asincrónicas, lo que es importante para garantizar la seguridad y la integridad de los datos.
¿Qué hace block_on?
- Inicia el future
- Bloquea el thread principal: mientras el future no se completa, el thread actual se bloquea y espera que la tarea async termine
- Devuelve el resultado producido por el future
¿Qué es block_on?
Es una función sincrónica que espera hasta que el futuro haya terminado y devuelve su resultado.
Es decir, es un adaptador del mundo asincrónico al sincrónico.
Nunca debe usarse en una función async, porque bloquea a todo el thread. block_on
conoce cuánto tiene que hacer sleep hasta hacer poll de nuevo.
¿Cuando usar un block_on?
- Pequeños programas que no requieren el uso de un runtime completo
- Para ejecutar una función async dentro de una función main sincrónica
- Entornos de pruebas
¿Cuando utilizar código Async
?
- Redes: Llamadas HTTP, TCP, WebSockets.
- Bases de Datos: Consultas a bases de datos que puedan tardar en responder.
- Lectura/Escritura de archivos: Operaciones de archivos grandes o intensivas en disco.
- APIs externas: Llamadas a APIs que pueden tener tiempos de respuesta variables
¿Que son los Executors?
“Executors” son mecanismos para programar y controlar la ejecución de tareas asincrónicas. Su función es administrar y ejecutar tareas asincrónicas que devuelven futures.