Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sospendo la 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 chiamando InitializeConditionVariable (per inizializzare la struttura in modo dinamico) o assegnando la costante CONDITION_VARIABLE_INIT alla variabile di struttura (per inizializzare la struttura in modo statico).
[in, out] SRWLock
Puntatore al blocco. Questo blocco deve essere mantenuto nel modo specificato dal parametro Flags .
[in] dwMilliseconds
Intervallo di timeout, espresso 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 ottenere informazioni estese sull'errore, chiamare GetLastError.
Se il timeout scade, la funzione restituisce FALSE e GetLastError restituisce ERROR_TIMEOUT.
Osservazioni:
Se il blocco viene sbloccato quando viene chiamata questa funzione, il comportamento della funzione non è definito.
Il thread può essere riattivato usando la funzione WakeConditionVariable o WakeAllConditionVariable . Dopo che il thread viene riattivato, 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 riattivazioni rubate (un altro thread riesce a essere eseguito prima del thread woken). Pertanto, è consigliabile controllare nuovamente un predicato (in genere in un while ciclo) dopo la restituzione di un'operazione di sospensione.
Requisiti
| Requisito | Value |
|---|---|
| Client minimo supportato | Windows Vista [app desktop | App UWP] |
| Server minimo supportato | Windows Server 2008 [app desktop | App UWP] |
| Piattaforma di destinazione | Windows |
| Header | synchapi.h (includere Windows.h in Windows 7, Windows Server 2008 Windows Server 2008 R2) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |