| 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) |
| ``` |
| |