Junior — Middle
Je možné odovzdať objekt typu string ako mechanizmus blokovania synchronizácie?
sobes.tech AI
Odpoveď od AI
V C# sa nedoporučuje používať objekt typu string ako mechanizmus blokovania (lock). Dôvodom je, že reťazce sú nemenné a internované (interned) objekty, čo znamená, že rovnaké literály reťazcov môžu odkazovať na ten istý objekt v pamäti.
To môže viesť k nečakaným zámkom, ak rôzne časti programu používajú rovnaké hodnoty reťazcov na synchronizáciu, čo môže spôsobiť zablokovanie alebo znížiť výkon.
Je lepšie použiť súkromný objekt, ktorý je špeciálne určený na zámok:
private readonly object _lockObj = new object();
public void SomeMethod()
{
lock(_lockObj)
{
// kritická sekcia
}
}