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 |