Junior — Middle
Explique en qué se diferencian los mecanismos Semaphore y Mutex en el contexto de la gestión del acceso a recursos
sobes.tech AI
Respuesta de la IA
Semaphore y Mutex son mecanismos de sincronización utilizados para gestionar el acceso a recursos, pero difieren en propósito y comportamiento:
-
Mutex (exclusión mutua) es un primitivo que permite que solo un hilo tenga acceso a un recurso a la vez. Garantiza acceso exclusivo. Si un hilo ha bloqueado el mutex, otros esperarán a que se libere.
-
Semaphore (contador de permisos) es un mecanismo más general que contiene un contador que determina cuántos hilos pueden acceder simultáneamente a un recurso. Por ejemplo, un semáforo con un contador de 3 permitirá que hasta tres hilos trabajen con el recurso al mismo tiempo.
Ejemplo en C#:
// Mutex
Mutex mutex = new Mutex();
mutex.WaitOne(); // bloquear mutex
// sección crítica
mutex.ReleaseMutex(); // liberar
// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // máximo 3 hilos
semaphore.WaitOne(); // adquirir permiso
// sección crítica
semaphore.Release(); // liberar permiso
En resumen:
- Mutex — para acceso exclusivo a un recurso.
- Semaphore — para limitar la cantidad de accesos simultáneos.
Esta es la diferencia clave al elegir un mecanismo de sincronización.