Compartir a través de


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.

Syntax

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 debe inicializarse llamando a InitializeConditionVariable (para inicializar la estructura dinámicamente) o asignar la constante CONDITION_VARIABLE_INIT a la variable de estructura (para inicializar la estructura estáticamente).

[in, out] SRWLock

Puntero al bloqueo. Este bloqueo debe mantenerse de la manera especificada por el parámetro Flags .

[in] dwMilliseconds

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 ejecuta correctamente, el valor devuelto es distinto de cero.

Si se produce un error en la función, 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.

Observaciones

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 despertado 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

Requirement Importancia
Cliente mínimo compatible Windows Vista [aplicaciones de escritorio | Aplicaciones para UWP]
Servidor mínimo admitido Windows Server 2008 [aplicaciones de escritorio | Aplicaciones para UWP]
de la plataforma de destino de Windows
Header synchapi.h (incluya Windows.h en Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
DLL de Kernel32.dll

Consulte también

Bloqueos delgados lector/escritor (SRW)

Funciones de sincronización de

API de Vertdll disponibles en enclaves de VBS