Sobes.tech
Junior — Middle

Poți enumera principalele primitive de sincronizare oferite de biblioteca standard?

sobes.tech AI

Răspuns de la AI

În biblioteca standard C# (în spațiul de nume System.Threading) sunt disponibile următoarele primitive principale de sincronizare:

  • lock (Monitor) — asigură accesul exclusiv la o resursă, blocând un bloc de cod.
  • Mutex — un mutex între procese, utilizat pentru sincronizarea între procese.
  • Semaphore și SemaphoreSlim — limitează numărul de fire de execuție care pot accesa simultan o resursă.
  • AutoResetEvent și ManualResetEvent — evenimente pentru semnalizare între fire.
  • ReaderWriterLockSlim — permite mai multor fire să citească o resursă în același timp, dar blochează scrierea.
  • SpinLock — o primitivă ușoară pentru blocări scurte fără schimbare de context.

Exemplu de utilizare a lock:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // cod care trebuie executat doar de un singur fir în același timp
    }
}