Sobes.tech
Junior — Middle

È possibile passare un oggetto di tipo string come meccanismo di blocco di sincronizzazione?

sobes.tech AI

Risposta dell'AI

In C# non è consigliabile utilizzare un oggetto di tipo string come meccanismo di blocco (lock). La ragione è che le stringhe sono oggetti immutabili e internati (interned), cioè i literali di stringa uguali possono riferirsi allo stesso oggetto in memoria.

Questo può portare a blocchi imprevisti se parti diverse del programma usano gli stessi valori di stringa per la sincronizzazione, creando deadlock o riducendo le prestazioni.

È meglio usare un oggetto privato, appositamente riservato per il blocco:

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // sezione critica
    }
}