Diferença entre Mutex e Semaphore

Mutex vs Semaphore

Mutex são usados ​​para fornecer acesso serializado a uma parte de um código reentrante que não pode ser executado em paralelo por mais de um thread. UMAmutexcertifica-se de que apenas um código pode acessar a seção controlada por vez. Para obter acesso, outrocódigossão obrigados a esperar até que o primeiro código saia. Você pode considerá-la como a chave de um quarto. A pessoa que tem acesso a essa chave vai primeiro. Até oTempoa pessoa volta, ninguém mais pode acessar aquela sala.



O Semaphore dá acesso a um recurso compartilhado a vários usuários simultaneamente. Conforme o número de usuários acessando o recurso aumenta, a contagem do semáforo diminui. Depois que os usuários começam a liberar o recurso, a contagem do semáforo começa a aumentar novamente. Ele é usado por aplicativos que requerem sincronização. O número de usuários simultâneos é restrito com base no limite do semáforo. Um semáforo pode ser considerado um conjunto de chaves semelhantes para fechaduras semelhantes a uma única sala, mas essas chaves são limitadas em número. As pessoas que possuem essas chaves podem compartilhar o quarto.

Diferenças entre mutex e semáforo:

1. Mutex é usado para exclusão mútua, enquanto o semáforo encontra sua utilidade em ambos os eventos

notificação e exclusões mútuas.

2. Mutex fornece acesso serial a recursos comuns, enquanto o semáforo limita

o número de acessos simultâneos.

3. Um mutex funciona com um segmento de cada vez, enquanto o semáforo gerencia vários segmentos

juntos.

4. Mutex tem um conceito de proprietário onde o processo que bloqueia o mutex só pode

reabra. Nenhum dos outros processos pode fazer isso. Mas no caso do semáforo, tal

restrições não existem.

5. Um mutex é um mecanismo de bloqueio, enquanto um semáforo é um mecanismo de sinalização com

com relação à sincronização de acesso a um recurso.

Resumo:

1. Semanticamente e em teoria, tanto o mutex quanto o semáforo são iguais. Um pode ser

implementado usando o outro, mas praticamente ambos são diferentes.

2. Um mutex nada mais é que um semáforo com um valor de contagem igual a um.

3. Um mutex é um semáforo com recursos adicionais, comopropriedadee inversão de prioridade

proteção.

4. Um semáforo é um abstratodadostipo que controla o acesso a um recurso comum por

vários processos em um ambiente de programação paralelo.

5. O Semaphore encontra seu uso em muitos sistemas operacionais como primitivo de sincronização.

6. Mutex e semáforo são recursos do kernel usados ​​com o propósito de

sincronização.