Junior — Middle
Poate fi transmis un obiect de tip string ca mecanism de blocare a sincronizării?
sobes.tech AI
Răspuns de la AI
Nu este recomandat să folosiți un obiect de tip string ca mecanism de blocare (lock) în C#. Motivul este că șirurile de caractere sunt obiecte imutabile și internate (interned), adică literalele de șiruri identice pot face referire la același obiect în memorie.
Aceasta poate duce la blocări neașteptate dacă diferite părți ale programului folosesc aceleași valori de șir pentru sincronizare, ceea ce poate crea blocaje mutuale sau reduce performanța.
Este mai bine să folosiți un obiect privat, special rezervat pentru blocare:
private readonly object _lockObj = new object();
public void SomeMethod()
{
lock(_lockObj)
{
// secțiune critică
}
}