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