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.