Função SleepConditionVariableSRW (synchapi.h)

Dorme na variável de condição especificada e libera o bloqueio especificado como uma operação atômica.

Sintaxe

BOOL SleepConditionVariableSRW(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PSRWLOCK            SRWLock,
  [in]      DWORD               dwMilliseconds,
  [in]      ULONG               Flags
);

Parâmetros

[in, out] ConditionVariable

Um ponteiro para a variável de condição. Essa variável deve ser inicializada usando a função InitializeConditionVariable .

[in, out] SRWLock

Um ponteiro para o bloqueio. Esse bloqueio deve ser mantido da maneira especificada pelo parâmetro Flags .

[in] dwMilliseconds

O intervalo de tempo limite em milissegundos. A função retornará se o intervalo decorrer. Se dwMilliseconds for zero, a função testará os estados dos objetos especificados e retornará imediatamente. Se dwMilliseconds for INFINITE, o intervalo de tempo limite da função nunca será decorrido.

[in] Flags

Se esse parâmetro for CONDITION_VARIABLE_LOCKMODE_SHARED, o bloqueio SRW estará no modo compartilhado. Caso contrário, o bloqueio estará no modo exclusivo.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será 0. Para obter informações de erro estendidas, chame GetLastError.

Se o tempo limite expirar, a função retornará FALSE e GetLastError retornará ERROR_TIMEOUT.

Comentários

Se o bloqueio for desbloqueado quando essa função for chamada, o comportamento da função será indefinido.

O thread pode ser acordado usando a função WakeConditionVariable ou WakeAllConditionVariable . Depois que o thread é acordado, ele adquire novamente o bloqueio liberado quando o thread entrou no estado de suspensão.

As variáveis de condição estão sujeitas a ativações espúrias (aquelas não associadas a uma ativação explícita) e ativações roubadas (outro thread consegue ser executado antes do thread acordado). Portanto, você deve verificar novamente um predicado (normalmente em um while loop) após o retorno de uma operação de suspensão.

Requisitos

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

Confira também

Bloqueios de LEITOR/Gravador Fino (SRW)

Funções de sincronização

APIs Vertdll disponíveis em enclaves de VBS