Once.initEnter

bool initEnter(ref void * location)

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 [glib.once.Once.initLeave] 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.

Parameters

locationlocation of a static initializable variable containing 0

Returns

true if the initialization section should be entered,

false and blocks otherwise