Sobes.tech
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
    }
}