Middle
Cosa sono i lock-ers in C#?
sobes.tech AI
Risposta dell'AI
lock in C# viene utilizzato per garantire l'accesso esclusivo a un blocco di codice. Garantisce che solo un thread possa eseguire quel blocco alla volta, prevenendo condizioni di gara (race conditions) durante l'uso di risorse condivise.
private static readonly object _lockObject = new object(); // Oggetto per la sincronizzazione
public void AccessSharedResource()
{
lock (_lockObject) // Blocca l'oggetto
{
// Sezione critica: codice che richiede accesso esclusivo
// Lavoro con risorsa condivisa (ad esempio, modificare una variabile)
} // La lock viene rilasciata automaticamente all'uscita dal blocco
}
Alternative e concetti correlati:
Monitor: Fornisce un controllo più granulare sulla sincronizzazione, includendo metodi come Wait, Pulse, PulseAll.Mutex: Usato per la sincronizzazione tra processi, così come tra thread nello stesso processo.Semaphore/SemaphoreSlim: Limita il numero di thread che possono accedere contemporaneamente a una risorsa.ReaderWriterLockSlim: Permette a più thread di leggere contemporaneamente, ma solo a uno di scrivere.
La scelta del meccanismo di lock dipende dal compito di sincronizzazione specifico. lock è una forma abbreviata di utilizzo di Monitor.Enter e Monitor.Exit, ed è adatto per la maggior parte dei casi semplici di sincronizzazione all'interno di un processo.