Defines an interface for condition variables.
Macros
SB_CONDITION_VARIABLE_MAX_SIZE
Max size of the SbConditionVariable type.
Enums
SbConditionVariableResult
Enumeration of possible results from waiting on a condvar.
Values
kSbConditionVariableSignaled
The wait completed because the condition variable was signaled.
kSbConditionVariableTimedOut
The wait completed because it timed out, and was not signaled.
kSbConditionVariableFailed
The wait failed, either because a parameter wasn't valid, or the condition variable has already been destroyed, or something similar.
Typedefs
SbConditionVariable
An opaque handle to a condition variable type with reserved memory buffer of size SB_CONDITION_VARIABLE_MAX_SIZE and aligned at void pointer type.
Definition
typedef union SbConditionVariable SbConditionVariable
Functions
SbConditionVariableBroadcast
Broadcasts to all current waiters of condition
to stop waiting. This function
wakes all of the threads waiting on condition
while SbConditionVariableSignal
wakes a single thread.
condition
: The condition that should no longer be waited for.
Declaration
bool SbConditionVariableBroadcast(SbConditionVariable *condition)
SbConditionVariableCreate
Creates a new condition variable to work with opt_mutex
, which may be null,
placing the newly created condition variable in out_condition
.
The return value indicates whether the condition variable could be created.
Declaration
bool SbConditionVariableCreate(SbConditionVariable *out_condition, SbMutex *opt_mutex)
SbConditionVariableDestroy
Destroys the specified SbConditionVariable . The return value indicates whether the destruction was successful. The behavior is undefined if other threads are currently waiting on this condition variable.
condition
: The SbConditionVariable to be destroyed. This invalidates the
condition variable.
Declaration
bool SbConditionVariableDestroy(SbConditionVariable *condition)
SbConditionVariableIsSignaled
Returns whether the given result is a success.
Declaration
static bool SbConditionVariableIsSignaled(SbConditionVariableResult result)
SbConditionVariableSignal
Signals the next waiter of condition
to stop waiting. This function wakes a
single thread waiting on condition
while SbConditionVariableBroadcast wakes
all threads waiting on it.
condition
: The condition that the waiter should stop waiting for.
Declaration
bool SbConditionVariableSignal(SbConditionVariable *condition)
SbConditionVariableWait
Waits for condition
, releasing the held lock mutex
, blocking indefinitely,
and returning the result. Behavior is undefined if mutex
is not held.
Declaration
SbConditionVariableResult SbConditionVariableWait(SbConditionVariable *condition, SbMutex *mutex)
SbConditionVariableWaitTimed
Waits for condition
, releasing the held lock mutex
, blocking up to
timeout_duration
, and returning the acquisition result. Behavior is undefined
if mutex
is not held.
timeout_duration
: The maximum amount of time that function should wait for
condition
, in microseconds. If the timeout_duration
value is less than or
equal to zero, the function returns as quickly as possible with a
kSbConditionVariableTimedOut result.
Declaration
SbConditionVariableResult SbConditionVariableWaitTimed(SbConditionVariable *condition, SbMutex *mutex, int64_t timeout_duration)