Peut-on utiliser une chaîne comme objet pour le verrouillage dans la construction lock?
sobes.tech IA
Réponse de l'IA
Il n'est pas recommandé d'utiliser une chaîne comme objet de verrouillage (lock) en C#. Bien que cela soit techniquement possible, les chaînes dans .NET sont immuables et peuvent être internées, ce qui signifie que des littéraux de chaîne identiques peuvent faire référence au même objet en mémoire.
Cela présente un risque que différentes parties du programme utilisent accidentellement la même chaîne pour le verrouillage, ce qui entraînera un comportement imprévisible et des problèmes de synchronisation.
La bonne pratique consiste à utiliser un objet privé séparé pour le verrouillage :
private readonly object _lockObj = new object();
lock(_lockObj)
{
// section critique
}
Ainsi, vous garantissez que le verrouillage est contrôlé uniquement par votre code et ne se croise pas avec d'autres parties du programme.