Funzione SleepConditionVariableSRW (synchapi.h)
Dorme nella variabile di condizione specificata e rilascia il blocco specificato come operazione atomica.
Sintassi
BOOL SleepConditionVariableSRW(
[in, out] PCONDITION_VARIABLE ConditionVariable,
[in, out] PSRWLOCK SRWLock,
[in] DWORD dwMilliseconds,
[in] ULONG Flags
);
Parametri
[in, out] ConditionVariable
Puntatore alla variabile di condizione. Questa variabile deve essere inizializzata usando la funzione InitializeConditionVariable .
[in, out] SRWLock
Puntatore al blocco. Questo blocco deve essere mantenuto nel modo specificato dal parametro Flags .
[in] dwMilliseconds
Intervallo di timeout, in millisecondi. La funzione restituisce se l'intervallo è trascorso. Se dwMilliseconds è zero, la funzione verifica gli stati degli oggetti specificati e restituisce immediatamente. Se dwMilliseconds è INFINITE, l'intervallo di timeout della funzione non scade mai.
[in] Flags
Se questo parametro è CONDITION_VARIABLE_LOCKMODE_SHARED, il blocco SRW è in modalità condivisa. In caso contrario, il blocco è in modalità esclusiva.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è 0
. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Se il timeout scade la funzione restituisce FALSE
e GetLastError restituisce ERROR_TIMEOUT.
Commenti
Se il blocco viene sbloccato quando questa funzione viene chiamata, il comportamento della funzione non è definito.
Il thread può essere woken usando la funzione WakeConditionVariable o WakeAllConditionVariable . Dopo che il thread viene interrotto, acquisisce nuovamente il blocco rilasciato quando il thread ha immesso lo stato di sospensione.
Le variabili di condizione sono soggette a riattivazioni spurie (quelle non associate a una riattivazione esplicita) e le riattivazioni rubate (un altro thread riesce a essere eseguito prima del thread woken). Pertanto, è necessario ricontrollare un predicato (in genere in un while
ciclo) dopo che un'operazione di sospensione restituisce.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | synchapi.h (includere Windows.h in Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Libreria | Kernel32.lib |
DLL | Kernel32.dll |