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 |