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