Sobes.tech
Junior — Middle

Leg uit wat de verschillen zijn tussen de mechanismen Semaphore en Mutex in de context van resourcebeheer

sobes.tech AI

Antwoord van AI

Semaphore en Mutex zijn synchronisatie-mechanismen die worden gebruikt om de toegang tot bronnen te beheren, maar ze verschillen in doel en gedrag:

  • Mutex (mutual exclusion) is een primitief dat toestaat dat slechts één thread tegelijk een bron bezit. Het zorgt voor exclusieve toegang. Als een thread de mutex heeft vergrendeld, wachten anderen tot deze wordt vrijgegeven.

  • Semaphore (toegangs teller) is een meer algemeen mechanisme dat een teller bevat die bepaalt hoeveel threads gelijktijdig toegang kunnen krijgen tot een bron. Bijvoorbeeld, een semaphore met een teller van 3 laat toe dat drie threads tegelijk met de bron werken.

Voorbeeld in C#:

// Mutex
Mutex mutex = new Mutex();

mutex.WaitOne(); // mutex vergrendelen
// kritieke sectie
mutex.ReleaseMutex(); // vrijgeven

// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // maximaal 3 threads

semaphore.WaitOne(); // toegang verkrijgen
// kritieke sectie
semaphore.Release(); // toegang vrijgeven

Samenvatting:

  • Mutex — voor exclusieve toegang tot een bron.
  • Semaphore — om het aantal gelijktijdige toegangen te beperken.

Dit is het kernverschil bij het kiezen van een synchronisatie-mechanisme.