Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 chamando InitializeConditionVariable (para inicializar a estrutura dinamicamente) ou atribuir a constante CONDITION_VARIABLE_INIT à variável de estrutura (para inicializar a estrutura estaticamente).
[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 decorrido. 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 de retorno
Se a função for bem-sucedida, o valor retornado não será 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 GetLastErrorretornará ERROR_TIMEOUT.
Observações
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.
Requirements
| Requirement | Value |
|---|---|
| Cliente mínimo suportado | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
| Servidor mínimo compatível | Windows Server 2008 [aplicativos da área de trabalho | Aplicativos UWP] |
| da Plataforma de Destino |
Windows |
| Header | synchapi.h (inclua Windows.h no Windows 7, Windows Server 2008 Windows Server 2008 R2) |
| Library | Kernel32.lib |
| de DLL |
Kernel32.dll |