Sobes.tech
Junior — Middle

Quali meccanismi di sincronizzazione dei thread conosci e puoi usare nei tuoi progetti?

sobes.tech AI

Risposta dell'AI

In C# vengono utilizzati diversi meccanismi per la sincronizzazione dei thread:

  • lock — metodo semplice per bloccare una sezione critica del codice.
  • Mutex — blocco interprocesso, utile quando è necessario sincronizzare l'accesso tra processi diversi.
  • Semaphore e SemaphoreSlim — permettono di limitare il numero di thread che eseguono contemporaneamente una determinata sezione di codice.
  • Monitor — meccanismo più flessibile su cui si basa lock.
  • ManualResetEvent e AutoResetEvent — per la segnalazione tra thread.
  • Collezioni concorrenti del namespace System.Collections.Concurrent — garantiscono un accesso thread-safe alle collezioni.

Esempio di utilizzo di lock:

private readonly object _lockObj = new object();

public void IncrementCounter()
{
    lock(_lockObj)
    {
        // Sezione critica
        counter++;
    }
}