Junior — Middle
Avez-vous utilisé le mécanisme de sémaphore dans vos projets pour gérer la concurrence des ressources?
sobes.tech IA
Réponse de l'IA
Oui, le mécanisme de sémaphore est souvent utilisé pour gérer l'accès à des ressources limitées dans des applications multithread. Sur iOS, par exemple, on peut utiliser DispatchSemaphore pour limiter le nombre de tâches s'exécutant simultanément.
Exemple d'utilisation de DispatchSemaphore:
let semaphore = DispatchSemaphore(value: 2) // autorise 2 tâches en même temps
DispatchQueue.global().async {
semaphore.wait() // décrémente le compteur, attend si 0
// section critique
print("Tâche démarrée")
sleep(2) // simulation de travail
print("Tâche terminée")
semaphore.signal() // incrémente le compteur
}
Cette approche aide à éviter les conditions de course et à contrôler la concurrence lors de l'utilisation de ressources limitées, par exemple lors de l'accès à une base de données ou de requêtes réseau.