Home

Mutexen

Mutexen, afgekort van mutual exclusion, zijn synchronisatieprimitieven die misbruik van gedeelde bronnen voorkomen door ervoor te zorgen dat slechts één thread tegelijk toegang heeft. Een mutex wordt doorgaans vergrendeld door een thread voordat de gedeelde bron wordt betreden en ontgrendeld nadat de bewerking is voltooid. Terwijl de mutex vergrendeld is, kunnen andere threads die proberen te vergrendelen wachten (blokkerend) of direct terugkeren met een mislukking (niet-blokkerende probeersel).

Verschillende varianten bestaan: standaard mutexen, recursieve mutexen (waarmee dezelfde thread meerdere keren kan vergrendelen), en timed

Veelvoorkomende problemen zijn deadlocks, vaak ontstaan als twee of meer threads mutexen in verschillende volgordes vergrendelen.

Implementaties verschillen per platform: POSIX-threads gebruiken pthread_mutex_t; Windows biedt CRITICAL_SECTION of echte mutexen; programmeertalen leveren standaarden

mutexen
(lockers
die
na
een
tijd
uitkomen).
Sommige
implementaties
bieden
fairness
of
priority
inheritance
om
prioriteitsinversie
te
voorkomen.
Oplossingen
omvatten
het
afdwingen
van
een
vaste
vergrendelingsvolgorde,
het
gebruik
van
hiërarchie
of
timeout-mogelijkheden,
en
het
beperken
van
de
duur
van
kritieke
secties.
zoals
C++
std::mutex,
std::recursive_mutex,
std::timed_mutex,
en
Java’s
Lock-achtige
API.
Praktische
richtlijnen
zijn
onder
meer
het
beperken
van
de
tijd
dat
een
mutex
vastzit,
het
vermijden
van
I/O
in
kritieke
secties,
en
het
kiezen
van
fijnmazige
of
lock-free
ontwerpen
waar
mogelijk.