### Function

# GLib Once init_enter

since: 2.14

#### Declaration [src]

    gboolean
    g_once_init_enter (
      void* location
    )

#### Description [src]

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:

      static gsize initialization_value = 0;

      if (g_once_init_enter (&initialization_value))
        {
          gsize setup_value = 42; // initialization code here

          g_once_init_leave (&initialization_value, setup_value);
        }

      // use initialization_value here

While `location` has a `volatile` qualifier, this is a historical artifact and the pointer passed to it should not be `volatile`.

Available since: 2.14

#### Parameters

`location`

  Type: `void*`

  Location of a static initializable variable containing 0.

  The argument will be modified by the function.

#### Return value

Type: `gboolean`

`TRUE` if the initialization section should be entered, `FALSE` and blocks otherwise.