Sobes.tech
Junior — Middle

¿Ha utilizado el mecanismo de semáforo en sus proyectos para gestionar la competencia por recursos?

sobes.tech AI

Respuesta de la IA

Sí, el mecanismo de semáforo se utiliza a menudo para gestionar el acceso a recursos limitados en aplicaciones multihilo. En iOS, por ejemplo, se puede usar DispatchSemaphore para limitar la cantidad de tareas que se ejecutan simultáneamente.

Ejemplo de uso de DispatchSemaphore:

let semaphore = DispatchSemaphore(value: 2) // permitimos 2 tareas simultáneamente

DispatchQueue.global().async {
    semaphore.wait() // decrementa el contador, espera si es 0
    // sección crítica
    print("Tarea iniciada")
    sleep(2) // simulación de trabajo
    print("Tarea finalizada")
    semaphore.signal() // incrementa el contador
}

Este enfoque ayuda a evitar condiciones de carrera y a controlar la competencia al trabajar con recursos limitados, por ejemplo, al acceder a una base de datos o realizar solicitudes de red.