Junior — Middle
Hoe verwerken systemen de situatie wanneer meerdere threads gelijktijdig toegang hebben tot een gedeelde variabele of toestand?
sobes.tech AI
Antwoord van AI
Wanneer meerdere threads gelijktijdig toegang krijgen tot een gedeelde variabele of toestand, ontstaat een raceconditieprobleem. Om onjuiste gegevens te voorkomen en de correctheid te waarborgen, worden synchronisatiemechanismen toegepast:
- Locks (lock, mutex) — stellen één thread in staat om exclusief toegang tot de bron te hebben, anderen wachten.
- Monitors (Monitor.Enter/Exit in C#) — een flexibelere vergrendelingsmechanisme.
- Het sleutelwoord
lockin C# — vereenvoudigde syntax voor monitors. - Atomische operaties (Interlocked) — voor eenvoudige operaties zonder volledige vergrendeling.
- Gelijktijdige collecties — thread-veilige datastructuren.
Voorbeeld met lock in C#:
private readonly object _sync = new object();
private int _counter = 0;
public void Increment()
{
lock(_sync)
{
_counter++;
}
}
Deze aanpak garandeert dat slechts één thread de variabele op een bepaald moment wijzigt.