SleepConditionVariableCS

SleepConditionVariableCS atomically releases the critical section and waits on the condition variable. When awakened (either by signal or timeout), the critical section is automatically reacquired before returning.

Syntax

Copy
BOOL SleepConditionVariableCS(
    PCONDITION_VARIABLE pConditionVariable,
    LPCRITICAL_SECTION pCriticalSection,
    DWORD dwMilliseconds
);

Parameters

pConditionVariable

A pointer to the condition variable

pCriticalSection

A pointer to the critical section to release. The critical section must be owned by the caller.

dwMilliseconds

The timeout interval in milliseconds. Use INFINITE for no timeout.

Return Value

This function returns TRUE if signaled. It returns FALSE if a timeout or error occurs.

Remarks

Requirements

Minimum supported version Header Library

wRTOS 1.1 SDK

windows.h

wRTOS_rtss.lib

Example

Copy
CONDITION_VARIABLE cv;
CRITICAL_SECTION cs;
BOOL condition = FALSE;

InitializeConditionVariable(&cv);
InitializeCriticalSection(&cs);

// Waiter thread
EnterCriticalSection(&cs);
while (!condition) {
    SleepConditionVariableCS(&cv, &cs, INFINITE);
}
LeaveCriticalSection(&cs);

// Signaler thread
EnterCriticalSection(&cs);
condition = TRUE;
WakeConditionVariable(&cv);
LeaveCriticalSection(&cs);

See Also: