Junior — Middle
Kun je de belangrijkste synchronisatie-primitieven die door de standaardbibliotheek worden geleverd opsommen?
sobes.tech AI
Antwoord van AI
In de standaardbibliotheek van C# (in de namespace System.Threading) zijn de volgende belangrijke synchronisatie-primitieven beschikbaar:
- lock (Monitor) — zorgt voor exclusieve toegang tot een resource door een codeblok te blokkeren.
- Mutex — een interproces mutex, gebruikt voor synchronisatie tussen processen.
- Semaphore en SemaphoreSlim — beperken het aantal threads dat gelijktijdig toegang heeft tot een resource.
- AutoResetEvent en ManualResetEvent — gebeurtenissen voor signaal tussen threads.
- ReaderWriterLockSlim — stelt meerdere threads in staat om een resource gelijktijdig te lezen, maar blokkeert schrijven.
- SpinLock — een lichte primitive voor korte blokkades zonder contextswitch.
Voorbeeld van het gebruik van lock:
private readonly object _lockObj = new object();
void CriticalSection()
{
lock(_lockObj)
{
// code die slechts door één thread tegelijk uitgevoerd mag worden
}
}