Sobes.tech
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.