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.

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

Vea también

Bloqueos delgados de lector/escritor (SRW)

Funciones de sincronización

API de Vertdll disponibles en enclaves de VBS