Junior — Middle
Lze předat objekt typu string jako mechanismus blokování synchronizace?
sobes.tech AI
Odpověď od AI
V C# se nedoporučuje používat objekt typu string jako mechanismus zámku (lock). Důvodem je, že řetězce jsou neměnné a internované (interned) objekty, což znamená, že stejné literály řetězců mohou odkazovat na stejný objekt v paměti.
To může vést k neočekávaným zámkům, pokud různé části programu používají stejné hodnoty řetězců pro synchronizaci, což může způsobit zablokování nebo snížit výkon.
Je lepší použít soukromý objekt, který je speciálně určen pro zámek:
private readonly object _lockObj = new object();
public void SomeMethod()
{
lock(_lockObj)
{
// kritická sekce
}
}