SleepConditionVariableSRW-Funktion (synchapi.h)

Schläft für die angegebene Bedingungsvariable und gibt die angegebene Sperre als atomischen Vorgang frei.

Syntax

BOOL SleepConditionVariableSRW(
  [in, out] PCONDITION_VARIABLE ConditionVariable,
  [in, out] PSRWLOCK            SRWLock,
  [in]      DWORD               dwMilliseconds,
  [in]      ULONG               Flags
);

Parameter

[in, out] ConditionVariable

Ein Zeiger auf die Bedingungsvariable. Diese Variable muss mit der InitializeConditionVariable-Funktion initialisiert werden.

[in, out] SRWLock

Ein Zeiger auf die Sperre. Diese Sperre muss in der vom Flags-Parameter angegebenen Weise gehalten werden.

[in] dwMilliseconds

Das Timeoutintervall in Millisekunden. Die Funktion gibt zurück, wenn das Intervall abgelaufen ist. Wenn dwMilliseconds null ist, testet die Funktion den Zustand der angegebenen Objekte und gibt sofort zurück. Wenn dwMillisecondsINFINITE ist, vergeht das Timeoutintervall der Funktion nie.

[in] Flags

Wenn dieser Parameter CONDITION_VARIABLE_LOCKMODE_SHARED ist, befindet sich die SRW-Sperre im freigegebenen Modus. Andernfalls befindet sich die Sperre im exklusiven Modus.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlschlägt, ist 0der Rückgabewert . Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.

Wenn das Timeout abläuft, gibt die Funktion zurück FALSE , und GetLastError gibt ERROR_TIMEOUT zurück.

Hinweise

Wenn die Sperre entsperrt wird, wenn diese Funktion aufgerufen wird, ist das Funktionsverhalten nicht definiert.

Der Thread kann mit der WakeConditionVariable - oder WakeAllConditionVariable-Funktion aktiviert werden. Nachdem der Thread aktiviert wurde, wird die Sperre erneut abgerufen, die er beim Eintritt des Threads in den Ruhezustand freigegeben hat.

Bedingungsvariablen Weckvorgängen (die nicht mit einer expliziten Aktivierung verbunden sind) und gestohlenen Aktivierungen (ein anderer Thread kann vor dem wachen Thread ausgeführt werden). Daher sollten Sie ein Prädikat (in der Regel in einer while Schleife) erneut überprüfen, nachdem ein Ruhezustandsvorgang zurückgegeben wurde.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile synchapi.h (einschließen von Windows.h unter Windows 7, Windows Server 2008 Windows Server 2008 R2)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

SrW-Sperren (Slim Reader/Writer)

Synchronisierungsfunktionen

In VBS-Enclaves verfügbare Vertdll-APIs