Sobes.tech
Junior — Middle

Tem experiência com o mecanismo de Barreira de Despacho para sincronização de threads?

sobes.tech IA

Resposta da IA

Sim, trabalhei com Dispatch Barrier no GCD (Grand Central Dispatch) para sincronizar threads no iOS.

Dispatch Barrier permite executar um bloco de código de forma exclusiva numa fila que suporta barreiras, geralmente numa fila concorrente. Isto significa que todas as tarefas iniciadas antes da barreira terminam, depois o bloco de barreira é executado, e só após a sua conclusão continuam as restantes tarefas.

Exemplo de uso:

let queue = DispatchQueue(label: "com.example.concurrent", attributes: .concurrent)

queue.async {
    print("Tarefa 1")
}

queue.async {
    print("Tarefa 2")
}

queue.async(flags: .barrier) {
    print("Tarefa de barreira — acesso exclusivo")
}

queue.async {
    print("Tarefa 3")
}

Isto é útil quando é necessário garantir acesso exclusivo a um recurso comum para escrita, permitindo ao mesmo tempo a execução paralela de tarefas de leitura.

Dispatch Barrier é uma forma conveniente de sincronização sem usar locks explícitos.