Mutex

Definição – o que significa Mutex?

Mutex, em C #, é uma classe definida na biblioteca de classes do .NET framework que pode ser usada para evitar a execução simultânea de um bloco de código por vários threads em execução em um ou vários processos.

Mutex é usado como uma primitiva de sincronização em situações em que um recurso deve ser compartilhado por vários encadeamentos simultaneamente. Objetos mutex nomeados são usados ​​para sincronização entre processos porque vários aplicativos podem acessar o mesmo objeto mutex.

A classe mutex é projetada para proteger um recurso compartilhado, como memória, controle de arquivo ou conexão de rede, do acesso simultâneo por vários threads ou processos. É usado na instrução de bloqueio para fornecer acesso serializado aos recursos e garante exclusão mútua dentro das seções críticas do código. Ajuda a prevenir a corrupção de dados imprevisível que pode surgir se não houver sincronização. Geralmente é usado para verificar uma única instância de um aplicativo por vez.

Mutex é uma forma abreviada de mutuamente exclusivo.

Definirtec explica Mutex

Mutex fornece múltiplos threads com acesso a um recurso compartilhado de forma que o segundo thread que precisa adquirir um mutex que já foi adquirido por outro thread tenha que esperar até o instante em que o primeiro thread libera o mutex. Deve-se ter cuidado para garantir que um encadeamento não tente adquirir um mutex que já contém, pois isso pode resultar em um conflito.

Por exemplo, um mutex pode ser usado para fornecer acesso exclusivo a um arquivo que deve ser lido ou modificado em um ambiente multithread.

A classe Mutex tem um construtor que pode ser usado para especificar parâmetros-chave de um novo objeto mutex durante sua inicialização, como nome, informações de propriedade e a segurança de controle de acesso a ser aplicada ao mutex nomeado.

Embora as instruções de bloqueio possam ser usadas para sincronizar threads em um único processo, o mutex é usado entre os limites do processo.

Como a classe mutex é um invólucro para uma construção Win32, ela requer transições de interoperabilidade que resultam em um impacto no desempenho. Como tal, não é uma boa escolha, a menos que seja necessário por motivos como a sincronização entre os limites do processo.

Esta definição foi escrita no contexto de C #