Expand Minimize

SleepConditionVariableSRW function

Sleeps on the specified condition variable and releases the specified lock as an atomic operation.


BOOL WINAPI SleepConditionVariableSRW(
  _Inout_ PCONDITION_VARIABLE ConditionVariable,
  _Inout_ PSRWLOCK            SRWLock,
  _In_    DWORD               dwMilliseconds,
  _In_    ULONG               Flags


ConditionVariable [in, out]

A pointer to the condition variable. This variable must be initialized using the InitializeConditionVariable function.

SRWLock [in, out]

A pointer to the lock. This lock must be held in the manner specified by the Flags parameter.

dwMilliseconds [in]

The time-out interval, in milliseconds. The function returns if the interval elapses. If dwMilliseconds is zero, the function tests the states of the specified objects and returns immediately. If dwMilliseconds is INFINITE, the function's time-out interval never elapses.

Flags [in]

If this parameter is CONDITION_VARIABLE_LOCKMODE_SHARED, the SRW lock is in shared mode. Otherwise, the lock is in exclusive mode.

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero. To get extended error information, call GetLastError.

If the timeout expires the function returns FALSE and GetLastError returns ERROR_TIMEOUT.


If the lock is unlocked when this function is called, the function behavior is undefined.

The thread can be woken using the WakeConditionVariable or WakeAllConditionVariable function.

Condition variables are subject to spurious wakeups (those not associated with an explicit wake) and stolen wakeups (another thread manages to run before the woken thread). Therefore, you should recheck a predicate (typically in a while loop) after a sleep operation returns.


Minimum supported client

Windows Vista [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2008 [desktop apps | Windows Store apps]

Minimum supported phone

Windows Phone 8


WinBase.h on Windows Vista, Windows 7, Windows Server 2008, and Windows Server 2008 R2 (include Windows.h);
Synchapi.h on Windows 8 and Windows Server 2012





See also

Slim Reader/Writer (SRW) Locks
Synchronization Functions



Community Additions

© 2015 Microsoft