Sobes.tech
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.