Starboard Module Reference: condition_variable.h

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)