Junior — Middle
¿En qué condiciones el uso de main.sync no provocará un bloqueo mutuo de los hilos?
sobes.tech AI
Respuesta de la IA
El uso de DispatchQueue.main.sync no provocará un bloqueo mutuo (deadlock) solo si la llamada no se realiza desde el hilo principal. Si llamas a main.sync desde el hilo principal, ese hilo esperará a que termine el bloque, que no puede comenzar porque el hilo principal ya está ocupado, lo que provoca un bloqueo mutuo.
Ejemplo de uso seguro:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// Actualización de la interfaz de usuario
}
}
Aquí, la llamada a main.sync se realiza desde un hilo en segundo plano, por lo que no se produce bloqueo. La regla principal es nunca llamar a DispatchQueue.main.sync desde el hilo principal.