Compartilhar via


CreateMutex

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Essa função cria um nomeado ou sem nome objeto mutex.

Syntax

HANDLE CreateMutex(
  LPSECURITY_ATTRIBUTES lpMutexAttributes,
  BOOL bInitialOwner,
  LPCTSTR lpName
);

Parameters

  • lpMutexAttributes
    [no] Ignorado. Deve ser NULL.
  • bInitialOwner
    [no] Boolean que especifica o proprietário inicial do objeto mutex. Se esse valor for TRUE e o chamador o mutex criado, o segmento chamado obtém a propriedade do objeto mutex. Caso contrário, o segmento chamado não conseguirá obter a propriedade do mutex. Para determinar se o chamador criado o mutex, consulte a seção Return Values.
  • lpName
    [no] Ponteiro longo para um seqüência de caracteres NULL-Terminated especificando o nome do objeto mutex. O nome é limitado ao caracteres MAX_PATH e pode conter qualquer caractere exceto o caminho barra invertida-caractere separador (\). Comparação nome é com diferenciação de maiúsculas e minúsculas.

    Se lpName é NULL, o objeto mutex é criado sem um nome.

    Se lpName Coincide com o nome de um nomeado existente objeto mutex, o bInitialOwner parâmetro foi ignorado porque ele já tiver sido definido, o processo de criação.

    Cada tipo objeto, such as memória mapas, semáforos, eventos, mensagem filas, exclusões mútuas e timers de monitoração, tem sua própria separar espaço para nome. Seqüências de caracteres vazia (" ") são tratados como nomeado objetos. Em plataformas com base em Área de trabalho Windows, sincronização objetos todos compartilhar o mesmo namespace.

Return Value

Um identificador para o objeto mutex indica sucesso. Se o nomeado objeto mutex existia antes de chamar função, a função retornará um identificador para o objeto existente, e GetLastError Retorna ERROR_ALREADY_EXISTS. Caso contrário, o chamador criado o mutex.

NULL Indica falha. Para informações de erro estendidas get, chamar GetLastError.

Remarks

O identificador retornado por CreateMutex Tem acessar MUTEX_ALL_ACCESS para o novo objeto mutex e podem ser usadas em qualquer função que requer um identificador para um objeto mutex.

Qualquer segmento da processo de chamada pode especificar o mutex-manipulador de objeto em um chamar a uma das funções de espera. O único-objeto espera funções retornam quando o estado do objeto especificado é sinalizado. O múltiplo-funções Aguardar objeto podem ser instruídos para retornar tanto quando qualquer um ou todos os objetos especificados são sinalizado. Quando uma função de espera retorna, o segmento em espera é lançado para continuar sua execução.

O estado de um objeto mutex é sinalizado quando nenhum segmento possui-lo. O criação de segmento pode usar o bInitialOwner sinalizador para a propriedade imediata solicitação do mutex. Caso contrário, um segmento deve usar um das funções de espera para a propriedade solicitação. Quando estado do mutex está sinalizado, um segmento em espera é concedido a propriedade, estado do mutex altera para não sinalizado e retorna a função de espera. Somente um segmento pode ter um mutex em qualquer tempo determinado. O segmento que usa a função ReleaseMutex para versão sua posse.

O segmento que possui um mutex pode especificar o mesmo mutex na função espera repetidos chama Sem bloqueio sua execução. Normalmente, o segmento não seria esperar repetidamente a mesma mutex, mas esse mecanismo evita que um segmento deadlocking próprio enquanto esperando um mutex que ele já possui. No entanto, a versão sua propriedade, o segmento deve chamar ReleaseMutex Uma vez para cada tempo que o mutex satisfeita uma espera.

Dois ou mais processos podem chamar CreateMutex Para criar o mesmo nomeado mutex. O primeiro processo realmente cria o mutex e processos subseqüentes aberto um identificador para o mutex existente. Este permite múltiplo processa a get alças do mutex mesma, enquanto relieving você da responsabilidade de garantir que o processo criando for iniciado primeiro. Ao usar esta técnica, definir o bInitialOwner sinalizador para FALSE; caso contrário, pode ser difícil ter certeza qual processo tem a propriedade inicial.

Vários processos podem têm alças do objeto mutex mesmo, habilitar uso o objeto para entre processos sincronização. Para fornecer compartilhamento objeto, um processo pode especificar o nome de um mutex objeto em um chamar para o CreateMutex função.

Use o CloseHandle função para fechar o identificador. O sistema fecha o identificador automaticamente quando o processo termina. O objeto mutex é destruído ao seu último identificador foi fechada.

Requirements

Header winbase.h
Library coredll.lib, Nk.lib
Windows Embedded CE Windows CE 1.01 and later
Windows Mobile Windows Mobile Version 5.0 and later

See Also

Reference

Synchronization Functions
CreateProcess
ReleaseMutex

Other Resources

CloseHandle