Junior — Middle
Welke methoden hebt u gebruikt om de veiligheid van threads te waarborgen bij gelijktijdige uitvoering van taken?
sobes.tech AI
Antwoord van AI
Om veilige werking van threads te garanderen bij gelijktijdige uitvoering van taken in C#, worden verschillende synchronisatie- en toegangscontrolemechanismen gebruikt:
- lock — blokkeert de kritieke sectie van de code, zodat slechts één thread deze tegelijk kan uitvoeren.
- Mutex — interprocesblokering, handig bij werken met bronnen die toegankelijk zijn vanuit verschillende processen.
- Semaphore en SemaphoreSlim — beperken het aantal threads dat gelijktijdig toegang kan krijgen tot een bron.
- Monitor — een flexibelere blokkeringmechanisme dat wachten en signaal geven over gebeurtenissen mogelijk maakt.
- Concurrerende collecties (bijvoorbeeld
ConcurrentDictionary,ConcurrentQueue) — zorgen voor threadveilige toegang tot collecties. - Interlocked — atomische operaties op variabelen om racecondities te voorkomen.
Voorbeeld van gebruik van lock:
private readonly object _lockObj = new object();
private int _counter = 0;
public void Increment()
{
lock(_lockObj)
{
_counter++;
}
}
Deze aanpak voorkomt gelijktijdige wijzigingen aan _counter door verschillende threads, voorkomt racecondities en garandeert de gegevensintegriteit.