Dados gerais

Interface: Mutex
Arquivos: lib/mutex.h
Última atualização: 22/12/2001
Autor: Luiz Henrique Shigunov
Informações

Descrição
Estruturas
Funções
  • 0x00 - Destroy - Destrói o mutex
  • 0x01 - Init - Inicia o mutex
  • 0x02 - Lock - Obtém o mutex
  • 0x03 - TryLock - Tenta obter o mutex
  • 0x04 - Unlock - Libera o mutex
  • Descrição

    Esta página descreve a interface do usuário Mutex.

    A idéia de ter uma interface Mutex é para possibilitar diferentes implementações desta interface. Uma implementação pode fazer um mutex extremamente rápido, mas sem nenhum tipo de controle de erro; outra pode implementar um mutex recursivo, etc.

    Se tivessemos uma interface Sync com todos os tipos de sincronizadores, cada implementação teria que implementar todos os sincronizadores da interface.

    Um mutex é um sincronizador do tipo exclusão mútua e é util para proteger dados compartilhados de modificações concorrentes. Serve também para implementar seções críticas e monitores.

    Um mutex tem dois possíveis estados: livre (não possuido por uma linha de execução) e fechado (possuido por uma linha de execução). Um mutex não pode ser possuido por duas linhas de execução ao mesmo tempo. Uma linha de execução que tentar obter um mutex já possuido por outra linha de execução é suspença até o mutex ser liberado.

    Estruturas

    typedef struct {
        unsigned int data[4];
    } Mutex;
    

    data são dados específicos e devem ser iniciados com Init.

    0x00 - Destroy

    Sintaxe

    int Destroy(Mutex *m);

    Descrição

    Esta função destrói o mutex m, liberando os seus recursos.

    O mutex não pode estar em uso.

    Valor de retorno

    0x01 - Init

    Sintaxe

    int Init(Mutex *m, int prop);

    Descrição

    Esta função inicia o mutex m com as propriedades prop.

    prop ainda não é usado.

    Valor de retorno

    0x02 - Lock

    Sintaxe

    int Lock(Mutex *m);

    Descrição

    Esta função obtém o mutex m.

    Se o mutex estiver livre ele é obtido. Se já foi obtido por outra linha de execução a linha de execução que chamou Lock é bloqueada até o mutex ser liberado.

    Se foi obtido pela mesma linha de execução, o comportamento depende da implementação.

    Valor de retorno

    0x03 - TryLock

    Sintaxe

    int TryLock(Mutex *m);

    Descrição

    Esta função tenta obter o mutex m.

    Ela se comporta da mesma maneira que Lock, mas retorna erro se a linha de execução for bloquear.

    Valor de retorno

    0x04 - Unlock

    Sintaxe

    int Unlock(Mutex *m);

    Descrição

    Esta função libera o mutex m.

    Valor de retorno