Sobes.tech
Middle

Kann man eine Zeichenkette als Objekt für die Sperrung in der lock-Konstruktion verwenden?

sobes.tech KI

Antwort von AI

Es wird nicht empfohlen, eine Zeichenkette als Sperrobjekt (lock) in C# zu verwenden. Obwohl dies technisch möglich ist, sind Zeichenketten in .NET unveränderlich (immutable) und können internisiert werden, was bedeutet, dass gleiche Zeichenkettenliterale auf dasselbe Objekt im Speicher verweisen können.

Dies birgt das Risiko, dass verschiedene Teile des Programms versehentlich dieselbe Zeichenkette zum Sperren verwenden, was zu unvorhersehbarem Verhalten und Synchronisationsproblemen führt.

Der richtige Ansatz ist die Verwendung eines separaten privaten Objekts für die Sperre:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // kritischer Abschnitt
}

Auf diese Weise stellen Sie sicher, dass die Sperre nur von Ihrem Code kontrolliert wird und nicht mit anderen Teilen des Programms kollidiert.