Expand Minimize

SleepConditionVariableSRW function

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

Syntax


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

Parameters

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.

Remarks

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.

Windows Phone 8: This API is supported.

Windows Phone 8.1: This API is supported.

Requirements

Minimum supported client

Windows Vista [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2008 [desktop apps | Windows Store apps]

Header

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

Library

Kernel32.lib

DLL

Kernel32.dll

See also

Slim Reader/Writer (SRW) Locks
Synchronization Functions

 

 

Community Additions

ADD
Show:
© 2014 Microsoft