Preguntas
¿Por qué Swift Concurrency quiere que dejes de controlar manualmente los hilos?
Controlar manualmente los hilos trae los siguientes costos:
- Costo elevado en memoria (stack de cada thread)
- Intercambio de contextos innecesariamente alto (más trabajo para los procesadores)
- problemas de inversión de prioridad.
Debido a los problemas anteriores, Swift Concurrency nos invita a dejar que el framework se encargue del manejo de hilos.
¿Qué es un dominio de aislamiento y cómo reemplaza el concepto de hilo?
Un dominio de aislamiento es una región o contexto al que pertenece un fragmento de código. Este contexto determina cómo ejecutar el código de forma segura y sin carreras de datos.
El cambio de paradigma consiste en que ahora se declara a qué dominio pertenece el código y Swift se encarga de ejecutarlo de forma segura, en el hilo que considere más eficiente.
¿Qué papel juegan los actores (actors) en Swift Concurrency?
Todo el código definido dentro un actor pertenece a su dominio de aislamiento y es ejecutado por un executor independiente, lo que garantiza que el código se ejecute de forma serial dentro del actor, evitando acceso concurrentes a su estado interno.
¿Cómo se le dan "pistas" al sistema sobre la prioridad de una tarea?
La "prioridad" de una tarea no establece directamente el orden de ejecución del código, sino que sugiere al runtime el nivel de importancia que tiene el bloque a ejecutar.
Sin embargo, puede darse el caso que tenga una tarea de prioridad alta que esté esperando a que una tarea de prioridad baja termine. Por esto se dice que la "prioridad" de una tarea es más bien una sugerencia.
¿Por qué una tarea de alta prioridad no garantiza ejecución inmediata?
La prioridad de una "tarea" es una sugerencia para el runtime. No se está asignando la tarea a un hilo, sino que se está indicando la naturaleza del trabajo a realizar.
¿Qué problema resuelve la conformancia con Sendable?
Un dato Sendable es seguro para cruzar dominios de aislamiento. Como Swift puede mover código entre hilos y no se puede predecir en cuál reanudará, es necesario garantizar que los datos compartidos entre dominios son seguros de transferir.
Según el artículo, ¿cuáles son los tres problemas que evita dejar que Swift gestione los hilos?
- Uso excesivo de memoria (para guardar el contexto)
- Uso elevado de procesador (para cambiar de contexto)
- Inversión de prioridad
En el ejemplo de código, ¿por qué la "Task 1" aparece ejecutándose en hilos distintos al inicio y al reanudarse?
La creación de una Task no garantiza la ejecución en un hilo específico. En el ejemplo, ante la aparición del punto de suspensión, la Task 1 cambió de hilo.
Top comments (0)