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