Sobes.tech
Junior — Middle

Kann man ein Objekt vom Typ String als Synchronisationssperrmechanismus übergeben?

sobes.tech KI

Antwort von AI

Es wird nicht empfohlen, in C# ein Objekt vom Typ string als Sperrmechanismus (lock) zu verwenden. Der Grund ist, dass Strings unveränderliche und internierte (interned) Objekte sind, das heißt, gleiche String-Literale können auf dasselbe Objekt im Speicher verweisen.

Dies kann zu unerwarteten Sperren führen, wenn verschiedene Teile des Programms die gleichen String-Werte zur Synchronisation verwenden, was zu Deadlocks führen oder die Leistung verringern kann.

Es ist besser, ein privates Objekt zu verwenden, das speziell für die Sperrung reserviert ist:

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // kritischer Abschnitt
    }
}