Junior — Middle
Wat is het verschil tussen het mutual exclusion mechanisme Lock en Semaphore bij het beheren van toegang tot bronnen?
sobes.tech AI
Antwoord van AI
Lock (mutual exclusion) en Semaphore (semafor) zijn synchronisatie-mechanismen, maar ze verschillen in functionaliteit en toepassing:
-
Lock (Mutex)
- Ontworpen om exclusieve toegang tot een bron te garanderen.
- Slechts één thread kan op een gegeven moment de Lock bezitten.
- Als de Lock bezet is, wachten andere threads tot deze wordt vrijgegeven.
- Wordt gebruikt om kritieke secties te beschermen.
-
Semaphore
- Heeft een teller die bepaalt hoeveel threads gelijktijdig toegang kunnen krijgen tot de bron.
- Kan meerdere threads tegelijk toegang verlenen (bijvoorbeeld, een semaphore met teller 3 staat toe dat 3 threads gelijktijdig toegang hebben).
- Wordt gebruikt om toegang tot beperkte bronnen te beheren.
Voorbeeld in C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // verkrijgen
// kritieke sectie
mutex.ReleaseMutex(); // vrijgeven
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maximaal 3 gelijktijdige toegang
semaphore.WaitOne();
// werken met de bron
semaphore.Release();
Dus, Lock is een specifiek geval van een semaphore met een maximale teller van 1.