Sobes.tech
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
    }
}