Fonction SleepConditionVariableCS (synchapi.h)

Veille sur la variable de condition spécifiée et libère la section critique spécifiée en tant qu’opération atomique.

Syntaxe

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

Paramètres

[in, out] ConditionVariable

Pointeur vers la variable de condition. Cette variable doit être initialisée à l’aide de la fonction InitializeConditionVariable .

[in, out] CriticalSection

Pointeur vers l’objet de section critique. Cette section critique doit être entrée exactement une fois par l’appelant au moment où SleepConditionVariableCS est appelé.

[in] dwMilliseconds

Intervalle de délai d’attente, en millisecondes. Si l’intervalle de délai d’attente s’écoule, la fonction acquiert à nouveau la section critique et retourne zéro. Si dwMilliseconds est égal à zéro, la fonction teste les états des objets spécifiés et retourne immédiatement. Si dwMilliseconds a la valeur INFINITE, l’intervalle de délai d’attente de la fonction ne s’écoule jamais. Pour plus d'informations, consultez la section Notes.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue ou si l’intervalle de délai d’attente s’écoule, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Les codes d’erreur possibles incluent ERROR_TIMEOUT, qui indique que l’intervalle de délai d’attente s’est écoulé avant qu’un autre thread n’ait tenté de réveiller le thread en veille.

Remarques

Un thread qui est en veille sur une variable de condition peut être réveillé avant l’expiration de l’intervalle de délai d’attente spécifié à l’aide de la fonction WakeConditionVariable ou WakeAllConditionVariable . Dans ce cas, le thread s’éveille lorsque le traitement du wake est terminé, et non lorsque son intervalle de délai d’attente s’écoule. Une fois le thread réveillé, il récupère à nouveau la section critique qu’il a publiée lorsque le thread est entré en état de veille.

Les variables de condition sont soumises à des mises en éveil fallacieuses (celles qui ne sont pas associées à un éveil explicite) et à des éveils volés (un autre thread parvient à s’exécuter avant le thread réveillé). Par conséquent, vous devez revérifier un prédicat (généralement dans une while boucle) après le retour d’une opération de veille.

Exemples

Pour obtenir un exemple qui utilise cette fonction, consultez Utilisation de variables de condition.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête synchapi.h (inclure Windows.h sur Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

Condition Variables

Fonctions de synchronisation

API Vertdll disponibles dans les enclaves VBS