blob: 3088cd90e625a72ecfbb2427ea04bb04f4453d9c [file] [log] [blame] [view] [edit]
Project: /youtube/cobalt/_project.yaml
Book: /youtube/cobalt/_book.yaml
# Starboard Module Reference: `once.h`
Onces represent initializations that should only ever happen once per process,
in a thread-safe way.
## Macros
### SB_ONCE_MAX_SIZE
Max size of the SbOnceControl type.
## Typedefs
### SbOnceControl
An opaque handle to a once control type with reserved memory buffer of size
SB_ONCE_MAX_SIZE and aligned at void pointer type.
#### Definition
```
typedef union SbOnceControl SbOnceControl
```
### SbOnceInitRoutine
Function pointer type for methods that can be called via the SbOnce() system.
#### Definition
```
typedef void(* SbOnceInitRoutine) (void)
```
## Functions
### SbOnce
Thread-safely runs `init_routine` only once.
* If this `once_control` has not run a function yet, this function runs
`init_routine` in a thread-safe way and then returns `true`.
* If SbOnce() was called with `once_control` before, the function returns
`true` immediately.
* If `once_control` or `init_routine` is invalid, the function returns
`false`.
#### Declaration
```
bool SbOnce(SbOnceControl *once_control, SbOnceInitRoutine init_routine)
```