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.