🧵 ¿Te haces un lío con Swift 6? Es simple: los hilos son una de las claves. Entender qué es un lío y atar un dato a un hilo para que siempre sea manejado desde este: te lo explico.
Swift 6: Los hilos son una de las claves
👨🏻💻 Cuando creamos un dato que puede ser usado en concurrencia (por varios procesos a la vez) y ese dato es mutable, corremos el peligro que sea accedido por varios procesos a la vez y genere una desincronía que provocará pérdida de datos e inconsistencia (un data race). Un problema muy común en el desarrollo hoy día que Swift 6 convierte en error del lenguaje para que nuestra código sea aun más seguro.
🤷🏻♂️ La solución es atar los datos a un hilo porque estando dentro de un hilo garantizas su serialización. ¿Por qué? Porque dentro de un hilo (donde todos ejecutan sus procesos de forma secuencial, uno tras otro) si tú impides que nadie pueda usar un dato fuera de dicho hilo es imposible que dos procesos a la vez accedan al mismo porque NUNCA va a ver dos procesos ejecutándose a la vez. Ese es el truco del almendruco.
🛠️ Swift ya tiene creado un hilo, el MainActor, en el que podemos colocar todo dato que no vaya a suponer asincronía y pare el hilo de ejecución de la UI. Y si necesitamos otro hilo (esta vez en segundo plano) donde aislar tipos de datos, basta que usemos la anotación globalActor para crear un nuevo hilo a través de un patrón singleton. Usamos esa anotación al tipo que queramos y ya estaría aislado a un mismo hilo.
🤯 Sí, es una capa más de complejidad al lenguaje. Sí, su abstracción puede resultar compleja. Pero creedme, una vez lo ves en código y se entiende, todo funciona a las mil maravillas y las ventajas que obtenemos es tener un código mucho más seguro y carente de inconsistencias. Recordad: lo importante es la seguridad del código.