Sobes.tech
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ă
    }
}