Sobes.tech
Junior — Middle

¿Se puede pasar un objeto de tipo string como mecanismo de bloqueo de sincronización?

sobes.tech AI

Respuesta de la IA

En C#, no se recomienda usar un objeto de tipo string como mecanismo de bloqueo (lock). La razón es que las cadenas son objetos inmutables e internados (interned), es decir, los literales de cadena iguales pueden referirse al mismo objeto en memoria.

Esto puede llevar a bloqueos inesperados si diferentes partes del programa usan los mismos valores de cadena para sincronizar, lo que puede crear interbloqueos o reducir el rendimiento.

Es mejor usar un objeto privado, específicamente reservado para el bloqueo:

private readonly object _lockObj = new object();

public void SomeMethod()
{
    lock(_lockObj)
    {
        // sección crítica
    }
}