Sobes.tech
Junior — Middle

Explique a diferença entre os mecanismos Semaphore e Mutex no contexto de gestão de acesso a recursos

sobes.tech IA

Resposta da IA

Semaphore e Mutex são mecanismos de sincronização usados para controlar o acesso a recursos, mas diferem em propósito e comportamento:

  • Mutex (exclusão mútua) é um primitivo que permite que apenas um thread possua um recurso de cada vez. Garante acesso exclusivo. Se um thread bloqueou o mutex, outros esperarão até que seja liberado.

  • Semaphore (contador de permissões) é um mecanismo mais geral que contém um contador que determina quantos threads podem acessar um recurso simultaneamente. Por exemplo, um semáforo com um contador de 3 permitirá que até três threads acessem o recurso ao mesmo tempo.

Exemplo em C#:

// Mutex
Mutex mutex = new Mutex();

mutex.WaitOne(); // bloquear mutex
// seção crítica
mutex.ReleaseMutex(); // liberar

// Semaphore
Semaphore semaphore = new Semaphore(3, 3); // máximo 3 threads

semaphore.WaitOne(); // adquirir permissão
// seção crítica
semaphore.Release(); // liberar permissão

Resumindo:

  • Mutex — para acesso exclusivo a um recurso.
  • Semaphore — para limitar o número de acessos simultâneos.

Esta é a diferença principal ao escolher um mecanismo de sincronização.