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.