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