EnterCriticalSection
9/8/2008
Essa função aguarda a propriedade do crítico especificado objeto seção. A função retorna quando o segmento chamado é concedido a propriedade.
Syntax
void EnterCriticalSection(
LPCRITICAL_SECTION lpCriticalSection
);
Parameters
- lpCriticalSection
[no] Ponteiro para o crítico objeto seção.
Return Value
Nenhum.
Remarks
Os segmentos de um único processo podem usar um crítico objeto seção para sincronização mutual-exclusion. O processo é responsável por alocar a memória usada por um crítico objeto seção, o que ele pode por declarando uma variável do tipo CRITICAL_SECTION. Antes de usar um crítico seção, algumas segmento do processo deve chamar o InitializeCriticalSection para inicializar o objeto.
Para acessar mutuamente habilitar a um recurso compartilhado, cada segmento chama o EnterCriticalSection função para a propriedade solicitação do crítico seção antes de executar qualquer seção de codificar que acessa o recurso protegido. EnterCriticalSection Bloqueia até que o segmento pode apropriar-se do crítico seção. Quando ele tiver terminado a execução de codificar protegido, o segmento usa a função LeaveCriticalSection para abandone posse, habilitando outro segmento para se tornar proprietário e acessar o recurso protegido. O segmento deve chamar LeaveCriticalSection Uma vez para cada tempo que ele Inserido crítico de seção. O segmento insere o crítico seção cada tempo EnterCriticalSection é bem-sucedida.
Após um segmento tem a propriedade de um crítico seção, ela pode fazer chamadas adicionais para EnterCriticalSection Sem bloqueio sua execução. Isso impede que um segmento de deadlocking próprio enquanto aguardava um crítico seção que ele já possui.
Qualquer segmento do processo pode usar o DeleteCriticalSection função para versão recursos de sistema que foram alocados quando o crítico objeto seção foi inicializado. Depois que essa função tiver sido chamado, o crítico objeto seção não pode mais ser usado para sincronização.
Se um segmento termina enquanto ele tem a propriedade de um crítico seção, o estado do crítico seção é indefinido.
Se um crítico seção é excluída enquanto ele ainda pertence, o estado de segmentos que estão aguardando a propriedade do crítico excluído seção é indefinido.
Se múltiplo segmentos chamar EnterCriticalSectione o crítico seção atualmente pertence um segmento diferente, o segmento prioridade mais alto entre os segmentos chamado obtém o crítico seção pela primeira vez após a atual segmento deixa o crítico seção. Se todos os segmentos chamado tiverem a mesma prioridade, um First-In, base de fila (FIFO) é usado após a atual segmento deixa o crítico seçã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. Esvaziar seqüências de caracteres, " ", são tratados como nomeado objetos. Em plataformas com base em Área de trabalho Windows, sincronização objetos todos compartilhar o mesmo namespace.
Requirements
Header | winbase.h |
Library | Coremain.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Synchronization Functions
DeleteCriticalSection
InitializeCriticalSection
LeaveCriticalSection