Seleccionar modelo de concurrencia
- Calcular Productos de matrices para entrenar redes neuronales:
- Fork - Join → tareas independientes que se pueden dividir paralelamente.
- Vectorización
- Realizar llamadas a diferentes APIs y combinar sus resultados:
- Async → llamar a las APIs (input/output) tarda bastante y luego hay poco cómputo.
- Las tareas son más livianas que abrir muchos hilos y las puedo estar intercalando porque son de sleep más que de cómputo.
- Además es más expresivo en el código.
- Procesar los logs de acceso de un sitio web muy concurrido:
- Fork - Join (es el ejemplo del tp)
- Backend de un editor colaborativo en línea
- Estable mutable compartido
Fork - Join
- Condiciones para aplicar Fork - Join
- Algoritmos y casos de estudio donde se utiliza
- El TP, Mergesort, producto de matrices, edición de imágenes.
- Scheduling
- Condiciones para aplicar Vectorización:
- Cómputo simple para gran cantidad de datos
- Tipos de operaciones Vectoriales.
- Verticales y horizontales.
Async
- Condiciones para aplicar async
- Ventajas y desventajas:
- Ventajas: Reducción del uso de memoria.
- Desventaja: solo sirve para un tipo de problema.
- APIs encadenadas tipo “stream”, funcional o Reactive Programing vs “await”
- Scheduling, modelo piñata y cooperativo.
- Que pasa si no se llama await?
- No se ejecuta Poll nunca al future y no se ejecuta nada.
Corrección
- Propiedades Safety
- Propiedades Liveness