Partilhar via


Função TryEnterCriticalSection (synchapi.h)

Tenta inserir uma seção crítica sem bloquear. Se a chamada for bem-sucedida, o thread de chamada assumirá a propriedade da seção crítica.

Sintaxe

BOOL TryEnterCriticalSection(
  [in, out] LPCRITICAL_SECTION lpCriticalSection
);

Parâmetros

[in, out] lpCriticalSection

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

Retornar valor

Se a seção crítica for inserida com êxito ou o thread atual já possuir a seção crítica, o valor retornado não será zero.

Se outro thread já possuir a seção crítica, o valor retornado será zero.

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. 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 chamar a função InitializeCriticalSection ou InitializeCriticalSectionAndSpinCount para inicializar o objeto.

Para habilitar o uso mutuamente exclusivo de um recurso compartilhado, cada thread chama a função EnterCriticalSection ou TryEnterCriticalSection para solicitar a propriedade da seção crítica antes de executar qualquer seção de código que use o recurso protegido. A diferença é que TryEnterCriticalSection retorna imediatamente, independentemente de ter obtido a propriedade da seção crítica, enquanto EnterCriticalSection bloqueia até que o thread possa assumir a propriedade da seção crítica. Quando terminar de executar o código protegido, o thread usará a função LeaveCriticalSection para renunciar à propriedade, permitindo que outro thread se torne o proprietário e obtenha acesso ao recurso protegido. O thread deve chamar LeaveCriticalSection uma vez para cada vez que ele inseriu a seção crítica.

Qualquer thread do processo pode usar a função DeleteCriticalSection para liberar os recursos do sistema que foram alocados quando o objeto de seção crítico foi inicializado. Depois que essa função tiver sido chamada, o objeto de seção crítica não poderá mais ser usado para sincronização.

Se um thread for encerrado enquanto tiver a propriedade de uma seção crítica, o estado da seção crítica será indefinido.

Para compilar um aplicativo que usa essa função, defina _WIN32_WINNT como 0x0400 ou posterior. Para obter mais informações, consulte Usando os cabeçalhos do Windows.

Requisitos

   
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

Objetos de seção críticos

Deletecriticalsection

Entercriticalsection

Initializecriticalsection

InitializeCriticalSectionAndSpinCount

Leavecriticalsection

Funções de sincronização

APIs Vertdll disponíveis em enclaves de VBS