Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Veille sur la variable de condition spécifiée et libère le verrou spécifié en tant qu’opération atomique.
Syntaxe
BOOL SleepConditionVariableSRW(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PSRWLOCK SRWLock,
[in] DWORD dwMilliseconds,
[in] ULONG Flags
);
Paramètres
[in, out] ConditionVariable
Pointeur vers la variable de condition. Cette variable doit être initialisée en appelant InitializeConditionVariable (pour initialiser la structure dynamiquement) ou affecter la constante CONDITION_VARIABLE_INIT à la variable de structure (pour initialiser la structure statiquement).
[in, out] SRWLock
Pointeur vers le verrou. Ce verrou doit être conservé de la manière spécifiée par le paramètre Flags .
[in] dwMilliseconds
Intervalle de délai d’attente, en millisecondes. La fonction retourne si l’intervalle s’écoule. Si dwMilliseconds est égal à zéro, la fonction teste les états des objets spécifiés et retourne immédiatement. Si dwMilliseconds est INFINITE, l’intervalle de délai d’attente de la fonction n’est jamais écoulé.
[in] Flags
Si ce paramètre est CONDITION_VARIABLE_LOCKMODE_SHARED, le verrou SRW est en mode partagé. Sinon, le verrou est en mode exclusif.
Valeur retournée
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est 0. Pour obtenir des informations d’erreur étendues, appelez GetLastError.
Si le délai d’expiration expire, la fonction retourne FALSE et GetLastError retourne ERROR_TIMEOUT.
Remarques
Si le verrou est déverrouillé lorsque cette fonction est appelée, le comportement de la fonction n’est pas défini.
Le thread peut être réveillé à l’aide de la fonction WakeConditionVariable ou WakeAllConditionVariable . Une fois le thread réveillé, il acquiert à nouveau le verrou qu’il a libéré lorsque le thread est entré dans l’état de veille.
Les variables de condition sont sujettes à de fausses sorties de veille (celles qui ne sont pas associées à un éveil explicite) et à des wakeups 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 une opération de veille.
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows Vista [applications de bureau | Applications UWP] |
| Serveur minimal pris en charge | Windows Server 2008 [applications de bureau | Applications UWP] |
| plateforme cible | Fenêtres |
| Header | synchapi.h (inclure Windows.h sur Windows 7, Windows Server 2008 Windows Server 2008 R2) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |