Sobes.tech
Middle

Lehet-e sztringet használni zárolási objektumként a lock szerkezetben?

sobes.tech MI

Válasz az MI-től

Nem ajánlott sztringet használni zárolási (lock) objektumként C#-ban. Bár technikailag lehetséges, a .NET-ben a sztringek változatlanok (immutable) és beágyazottak (interned), ami azt jelenti, hogy azonos sztring literálok ugyanarra az objektumra hivatkozhatnak a memóriában.

Ez azzal jár, hogy a program különböző részei véletlenül ugyanazt a sztringet használhatják zárolásra, ami kiszámíthatatlan viselkedést és szinkronizációs problémákat okozhat.

A helyes megközelítés egy külön, privát zárolóobjektum használata:

private readonly object _lockObj = new object();

lock(_lockObj)
{
    // kritikus szakasz
}

Így biztosítja, hogy a zárolás csak a saját kódja által legyen kontrollálva, és ne ütközzön más programrészekkel.