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.