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é.