### Struct

# GLib Once

since: 2.4

#### Description [src]

    struct GOnce {
      volatile GOnceStatus status;
      volatile gpointer retval;
    }

A `GOnce` struct controls a one-time initialization function. Any one-time initialization function must have its own unique `GOnce` struct.

###### Structure members

`status:` `GOnceStatus`

  The status of the `GOnce`.

`retval:` `volatile gpointer`

  The value returned by the call to the function, if `status` is `G_ONCE_STATUS_READY`.

Available since: 2.4

#### Functions

###### g_once_init_enter

Function to be called when starting a critical initialization section. The argument `location` must point to a static 0-initialized variable that will be set to a value other than 0 at the end of the initialization section. In combination with `g_once_init_leave()` and the unique address `value_location`, it can be ensured that an initialization section will be executed only once during a program’s life time, and that concurrent threads are blocked until initialization completed. To be used in constructs like this:.

since: 2.14

###### g_once_init_enter_impl

No description available.

###### g_once_init_enter_pointer

This functions behaves in the same way as g_once_init_enter(), but can can be used to initialize pointers (or #guintptr) instead of #gsize.

since: 2.80

###### g_once_init_leave

Counterpart to g_once_init_enter(). Expects a location of a static 0-initialized initialization variable, and an initialization value other than 0. Sets the variable to the initialization value, and releases concurrent threads blocking in `g_once_init_enter()` on this initialization variable.

since: 2.14

###### g_once_init_leave_pointer

Counterpart to g_once_init_enter_pointer(). Expects a location of a static `NULL`-initialized initialization variable, and an initialization value other than `NULL`. Sets the variable to the initialization value, and releases concurrent threads blocking in `g_once_init_enter_pointer()` on this initialization variable.

since: 2.80

#### Instance methods

###### g_once_impl

No description available.