Función SleepConditionVariableSRW (synchapi.h)
Se suspende en la variable de condición especificada y libera el bloqueo especificado como una operación atómica.
Sintaxis
BOOL SleepConditionVariableSRW(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PSRWLOCK SRWLock,
[in] DWORD dwMilliseconds,
[in] ULONG Flags
);
Parámetros
[in, out] ConditionVariable
Puntero a la variable de condición. Esta variable se debe inicializar mediante la función InitializeConditionVariable .
[in, out] SRWLock
Puntero al bloqueo. Este bloqueo debe mantenerse de la manera especificada por el parámetro Flags .
[in] dwMilliseconds
El intervalo de tiempo de espera en milisegundos. La función devuelve si transcurre el intervalo. Si dwMilliseconds es cero, la función prueba los estados de los objetos especificados y devuelve inmediatamente. Si dwMilliseconds es INFINITE, el intervalo de tiempo de espera de la función nunca transcurre.
[in] Flags
Si este parámetro es CONDITION_VARIABLE_LOCKMODE_SHARED, el bloqueo SRW está en modo compartido. De lo contrario, el bloqueo está en modo exclusivo.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función produce un error, el valor devuelto es 0
. Para obtener información de error extendida, llame a GetLastError.
Si el tiempo de espera expira, la función devuelve FALSE
y GetLastError devuelve ERROR_TIMEOUT.
Comentarios
Si el bloqueo se desbloquea cuando se llama a esta función, el comportamiento de la función no está definido.
El subproceso se puede reactivar mediante la función WakeConditionVariable o WakeAllConditionVariable . Una vez que se reactiva el subproceso, vuelve a adquirir el bloqueo que liberó cuando el subproceso entró en estado de suspensión.
Las variables de condición están sujetas a reactivaciones falsas (las que no están asociadas a una reactivación explícita) y las reactivaciones robadas (otro subproceso administra la ejecución antes del subproceso despertado). Por lo tanto, debe volver a comprobar un predicado (normalmente en un while
bucle) después de que se devuelva una operación de suspensión.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [aplicaciones de escritorio | aplicaciones para UWP] |
Servidor mínimo compatible | Windows Server 2008 [aplicaciones de escritorio | aplicaciones para UWP] |
Plataforma de destino | Windows |
Encabezado | synchapi.h (incluye Windows.h en Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Library | Kernel32.lib |
Archivo DLL | Kernel32.dll |