Sobes.tech
Middle

¿Qué son los lock-ers en C#?

sobes.tech AI

Respuesta de la IA

lock en C# se utiliza para garantizar el acceso exclusivo a un bloque de código. Asegura que solo un hilo pueda ejecutar ese bloque a la vez, evitando condiciones de carrera (race conditions) al trabajar con recursos compartidos.

private static readonly object _lockObject = new object(); // Objeto para sincronización

public void AccessSharedResource()
{
    lock (_lockObject) // Bloqueo del objeto
    {
        // Sección crítica: código que requiere acceso exclusivo
        // Trabajo con recurso compartido (por ejemplo, modificar una variable)
    } // El bloqueo se libera automáticamente al salir del bloque
}

Alternativas y conceptos relacionados:

  • Monitor: Proporciona un control más granular sobre la sincronización, incluyendo métodos Wait, Pulse, PulseAll.
  • Mutex: Se usa para sincronización entre procesos, así como entre hilos en un mismo proceso.
  • Semaphore/SemaphoreSlim: Limita la cantidad de hilos que pueden acceder simultáneamente a un recurso.
  • ReaderWriterLockSlim: Permite que múltiples hilos lean simultáneamente, pero solo uno pueda escribir.

La elección del mecanismo de bloqueo depende de la tarea de sincronización específica. lock es una forma abreviada de usar Monitor.Enter y Monitor.Exit, y es adecuado para la mayoría de los casos simples de sincronización dentro de un mismo proceso.