Sobes.tech
Junior — Middle

Puoi elencare le primitive di sincronizzazione principali fornite dalla libreria standard?

sobes.tech AI

Risposta dell'AI

Nella libreria standard di C# (nello spazio dei nomi System.Threading) sono disponibili le seguenti primitive di sincronizzazione principali:

  • lock (Monitor) — garantisce l'accesso esclusivo a una risorsa, bloccando un blocco di codice.
  • Mutex — un mutex tra processi, usato per la sincronizzazione tra processi.
  • Semaphore e SemaphoreSlim — limitano il numero di thread che accedono contemporaneamente a una risorsa.
  • AutoResetEvent e ManualResetEvent — eventi per la segnalazione tra thread.
  • ReaderWriterLockSlim — permette a più thread di leggere contemporaneamente una risorsa, ma blocca la scrittura.
  • SpinLock — una primitiva leggera per blocchi brevi senza cambio di contesto.

Esempio di utilizzo di lock:

private readonly object _lockObj = new object();

void CriticalSection()
{
    lock(_lockObj)
    {
        // codice che deve essere eseguito solo da un thread alla volta
    }
}