Junior — Middle
Quelle est la différence entre le mécanisme d'exclusion mutuelle Lock et Semaphore dans la gestion de l'accès aux ressources?
sobes.tech IA
Réponse de l'IA
Lock (verrou) et Semaphore (sémaphore) sont des mécanismes de synchronisation, mais ils diffèrent par leur fonctionnalité et leur utilisation :
-
Lock (Mutex)
- Conçu pour assurer un accès exclusif à une ressource.
- Un seul thread peut posséder le Lock à la fois.
- Si le Lock est occupé, d'autres threads attendent qu'il soit libéré.
- Utilisé pour protéger les sections critiques.
-
Semaphore
- Possède un compteur qui détermine combien de threads peuvent accéder simultanément à la ressource.
- Peut permettre l'accès à plusieurs threads en même temps (par exemple, un sémaphore avec un compteur de 3 permet à 3 threads d'accéder simultanément).
- Utilisé pour gérer l'accès à un nombre limité de ressources.
Exemple en C# :
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // acquisition
// section critique
mutex.ReleaseMutex(); // libération
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maximum 3 accès simultanés
semaphore.WaitOne();
// travail avec la ressource
semaphore.Release();
Ainsi, Lock est un cas particulier de sémaphore avec un compteur maximum de 1.