Junior — Middle
Como funciona o bloqueio ao chamar o método sync numa fila sequencial?
sobes.tech IA
Resposta da IA
Ao chamar o método sync numa fila serial no GCD (Grand Central Dispatch), o thread atual fica bloqueado até que a tarefa passada ao sync seja concluída. Se sync for chamado do mesmo thread que atende essa fila, ocorre um deadlock, pois a fila não pode iniciar uma nova tarefa até que a atual termine, e o thread atual aguarda a conclusão da nova tarefa.
Exemplo:
let serialQueue = DispatchQueue(label: "com.exemplo.serial")
serialQueue.sync {
print("Executando tarefa")
}
// O thread atual fica bloqueado até a tarefa terminar
É importante não chamar sync na mesma fila serial de dentro de uma tarefa dessa fila para evitar deadlocks.