Compartilhar via


Função InitializeCriticalSection (synchapi.h)

Inicializa um objeto de seção crítico.

Sintaxe

void InitializeCriticalSection(
  [out] LPCRITICAL_SECTION lpCriticalSection
);

Parâmetros

[out] lpCriticalSection

Um ponteiro para o objeto de seção crítico.

Retornar valor

Essa função não retorna um valor.

Windows Server 2003 e Windows XP: Em situações de memória baixa, InitializeCriticalSection pode gerar uma exceção STATUS_NO_MEMORY . A partir do Windows Vista, essa exceção foi eliminada e InitializeCriticalSection sempre é bem-sucedida, mesmo em situações de memória baixa.

Comentários

Os threads de um único processo podem usar um objeto de seção crítico para sincronização de exclusão mútua. Não há nenhuma garantia sobre a ordem em que os threads obterão a propriedade da seção crítica, no entanto, o sistema será justo com todos os threads.

O processo é responsável por alocar a memória usada por um objeto de seção crítico, o que pode ser feito declarando uma variável do tipo CRITICAL_SECTION. Antes de usar uma seção crítica, algum thread do processo deve inicializar o objeto.

Depois que um objeto de seção crítico tiver sido inicializado, os threads do processo poderão especificar o objeto na função EnterCriticalSection, TryEnterCriticalSection ou LeaveCriticalSection para fornecer acesso mutuamente exclusivo a um recurso compartilhado. Para sincronização semelhante entre os threads de processos diferentes, use um objeto mutex.

Um objeto de seção crítico não pode ser movido ou copiado. O processo também não deve modificar o objeto, mas deve tratá-lo como logicamente opaco. Use apenas as funções de seção críticas para gerenciar objetos de seção críticos. Quando terminar de usar a seção crítica, chame a função DeleteCriticalSection .

Um objeto de seção crítico deve ser excluído antes que ele possa ser reinicializado. Inicializar uma seção crítica que já foi inicializada resulta em um comportamento indefinido.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho synchapi.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Createmutex

Objetos de seção críticos

Deletecriticalsection

Entercriticalsection

InitializeCriticalSectionAndSpinCount

Leavecriticalsection

Funções de sincronização

TryEnterCriticalSection

APIs Vertdll disponíveis em enclaves de VBS