Sobes.tech
Junior — Middle

É possível passar um objeto do tipo string como mecanismo de bloqueio de sincronização?

sobes.tech IA

Resposta da IA

Não é recomendado usar um objeto do tipo string como mecanismo de bloqueio (lock) em C#. A razão é que as strings são objetos imutáveis e internados (interned), ou seja, literais de string iguais podem referir-se ao mesmo objeto na memória.

Isso pode levar a bloqueios inesperados se diferentes partes do programa usarem os mesmos valores de string para sincronização, o que pode criar deadlocks ou diminuir o desempenho.

É melhor usar um objeto privado, especificamente reservado para o bloqueio:

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // secção crítica
    }
}