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 |