Diferença entre Mutex e Semáforo

Mutex vs Semaphore

O Mutex é usado 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. Um mutex garante que apenas um código possa acessar a seção controlada por vez. Para obter acesso, outros códigos são feitos para aguardar a saída do primeiro código. Você pode considerar como uma chave para um quarto. A pessoa que tem acesso a essa chave primeiro vai primeiro. Até o momento em que a pessoa voltar, ninguém mais poderá acessar a sala.

O semáforo dá acesso a um recurso compartilhado a vários usuários simultaneamente. À medida que o número de usuários que acessam o recurso aumenta, a contagem de semáforos diminui. Quando os usuários começam a liberar o recurso, a contagem de semáforos começa a aumentar novamente. É 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 pensado como um conjunto de chaves semelhantes a bloqueios semelhantes a um quarto individual, 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. O Mutex é usado para exclusão mútua, enquanto o semáforo encontra sua utilidade nos dois eventos.

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

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

o número de acessos simultâneos.

3. Um mutex trabalha com um thread por vez, enquanto o semáforo gerencia vários threads

juntos.

4. O Mutex possui um conceito de proprietário, no qual o processo que bloqueia o mutex pode apenas

reabri-lo. 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

em relação à sincronização do acesso a um recurso.

Resumo:

1. Semanticamente e em teoria, tanto o mutex quanto o semáforo são iguais. Pode-se ser

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

2. Um mutex não é senão um semáforo com um valor de contagem igual a um.

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

proteção.

4. Um semáforo é um tipo de dados abstrato que controla o acesso a um recurso comum por

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

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

6. Tanto o mutex quanto o semáforo são recursos do kernel usados ​​para fins de

sincronização.