Sobes.tech
Junior — Middle

¿En qué se diferencian los mecanismos de exclusión mutua Lock y Semaphore en la gestión del acceso a recursos?

sobes.tech AI

Respuesta de la IA

Lock (exclusión mutua) y Semaphore (semaforo) son mecanismos de sincronización, pero difieren en funcionalidad y aplicación:

  • Lock (Mutex)

    • Diseñado para garantizar acceso exclusivo a un recurso.
    • Solo un hilo puede poseer el Lock en un momento dado.
    • Si el Lock está ocupado, otros hilos esperan a que se libere.
    • Se usa para proteger secciones críticas.
  • Semaphore

    • Tiene un contador que determina cuántos hilos pueden acceder simultáneamente al recurso.
    • Puede permitir el acceso a varios hilos a la vez (por ejemplo, un semáforo con contador 3 permite 3 hilos simultáneamente).
    • Se usa para gestionar el acceso a recursos limitados.

Ejemplo en C#:

// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // adquisición
// sección crítica
mutex.ReleaseMutex(); // liberación

// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // máximo 3 accesos simultáneos
semaphore.WaitOne();
// trabajo con el recurso
semaphore.Release();

Por lo tanto, Lock es un caso particular de semáforo con un contador máximo de 1.