Sobes.tech
Junior — Middle

Pouvez-vous expliquer quels types de verrouillages existent et comment ils fonctionnent en programmation multithread ?

sobes.tech IA

Réponse de l'IA

Dans la programmation multithread, il existe différents types de verrouillages qui aident à synchroniser l'accès aux ressources partagées :

  • Mutex (Mutual Exclusion) — assure un accès exclusif à une ressource. Un seul thread peut acquérir le mutex à la fois.
  • Mutex récursif — permet au même thread d'acquérir le verrou plusieurs fois sans se bloquer lui-même.
  • Verrou de lecture-écriture (Read-Write Lock) — permet à plusieurs threads de lire la ressource simultanément, mais l'écriture est uniquement possible de manière exclusive.
  • Sémaphore — limite le nombre de threads pouvant accéder à la ressource en même temps.
  • Spinlock (attente active) — le thread vérifie en boucle si le verrou est disponible, sans passer en état d'attente.

Exemple d'utilisation d'un mutex en Swift :

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Section critique
    lock.unlock()
}

Le choix du type de verrouillage dépend de la tâche et des exigences en termes de performance et de sécurité.