blob: 9fdcdb12bb62f87a396c561a87688e774ed65d49 [file] [view]
---
layout: doc
title: "Starboard Module Reference: condition_variable.h"
---
Defines an interface for condition variables.
## 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.
## 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`. 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, SbTime timeout_duration)
```