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
}
}