Junior — Middle
¿Cómo funciona el bloqueo al llamar al método sync en una cola secuencial?
sobes.tech AI
Respuesta de la IA
Al llamar al método sync en una cola serial en GCD (Grand Central Dispatch), el hilo actual se bloquea hasta que la tarea pasada a sync se complete. Si sync se llama desde el mismo hilo que atiende esa cola, se produce un bloqueo mutuo, ya que la cola no puede comenzar a ejecutar una nueva tarea hasta que la actual termine, y el hilo actual espera a que termine la nueva tarea.
Ejemplo:
let serialQueue = DispatchQueue(label: "com.ejemplo.serial")
serialQueue.sync {
print("Ejecutando tarea")
}
// El hilo actual está bloqueado hasta que la tarea termine
Es importante no llamar a sync en la misma cola serial desde dentro de una tarea de esa misma cola para evitar bloqueos mutuos.