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
}
}