Sobes.tech
Junior — Middle

Já utilizou o mecanismo de semáforo nos seus projetos para gerir a concorrência de recursos?

sobes.tech IA

Resposta da IA

Sim, o mecanismo de semáforo é frequentemente utilizado para gerir o acesso a recursos limitados em aplicações multithread. No iOS, por exemplo, pode-se usar DispatchSemaphore para limitar o número de tarefas que podem ser executadas simultaneamente.

Exemplo de uso de DispatchSemaphore:

let semaphore = DispatchSemaphore(value: 2) // permite 2 tarefas ao mesmo tempo

DispatchQueue.global().async {
    semaphore.wait() // decrementa o contador, espera se for 0
    // secção crítica
    print("Tarefa iniciada")
    sleep(2) // simulação de trabalho
    print("Tarefa terminada")
    semaphore.signal() // incrementa o contador
}

Esta abordagem ajuda a evitar condições de corrida e a controlar a concorrência ao trabalhar com recursos limitados, por exemplo, ao aceder a uma base de dados ou fazer pedidos de rede.