Compartir a través de


Función SleepConditionVariableCS (synchapi.h)

Se suspende en la variable de condición especificada y libera la sección crítica especificada como una operación atómica.

Sintaxis

BOOL SleepConditionVariableCS(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PCRITICAL_SECTION   CriticalSection,
  [in]      DWORD               dwMilliseconds
);

Parámetros

[in, out] ConditionVariable

Puntero a la variable de condición. Esta variable se debe inicializar mediante la función InitializeConditionVariable .

[in, out] CriticalSection

Puntero al objeto de sección crítica. El autor de la llamada debe especificar esta sección crítica exactamente una vez en el momento en que se llama a SleepConditionVariableCS .

[in] dwMilliseconds

El intervalo de tiempo de espera en milisegundos. Si transcurre el intervalo de tiempo de espera, la función vuelve a adquirir la sección crítica y devuelve cero. 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. Para obtener más información, vea la sección Comentarios.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si se produce un error en la función o el intervalo de tiempo de espera transcurrido, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError. Los posibles códigos de error incluyen ERROR_TIMEOUT, lo que indica que el intervalo de tiempo de espera ha transcurrido antes de que otro subproceso haya intentado reactivar el subproceso en suspensión.

Comentarios

Un subproceso que se está durmiendo en una variable de condición se puede reactivar antes de que haya transcurrido el intervalo de tiempo de espera especificado mediante la función WakeConditionVariable o WakeAllConditionVariable . En este caso, el subproceso se reactiva cuando se completa el procesamiento de reactivación y no cuando transcurre su intervalo de tiempo de espera. Una vez despertado el subproceso, vuelve a adquirir la sección crítica 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.

Ejemplos

Para obtener un ejemplo que use esta función, consulte Using Condition Variables.

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

Variables de condición

Funciones de sincronización

API de Vertdll disponibles en enclaves de VBS