Sobes.tech
Junior — Middle

Peut-on passer un objet de type string comme mécanisme de verrouillage de synchronisation?

sobes.tech IA

Réponse de l'IA

Il n'est pas recommandé d'utiliser un objet de type string comme mécanisme de verrouillage (lock) en C#. La raison en est que les chaînes sont des objets immuables et internés (interned), ce qui signifie que les littéraux de chaîne identiques peuvent faire référence au même objet en mémoire.

Cela peut entraîner des blocages inattendus si différentes parties du programme utilisent les mêmes valeurs de chaîne pour la synchronisation, ce qui peut créer des interblocages ou réduire les performances.

Il est préférable d'utiliser un objet privé, spécialement réservé au verrouillage :

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // section critique
    }
}