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
}
}