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:
This functions behaves in the same way as glib.once.Once.initEnter, but can can be used to initialize pointers (or #guintptr) instead of #gsize.
Counterpart to glib.once.Once.initEnter. 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 glib.once.Once.initEnter on this initialization variable.
Counterpart to glib.once.Once.initEnterPointer. 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 glib.once.Once.initEnterPointer on this initialization variable.
A #GOnce struct controls a one-time initialization function. Any one-time initialization function must have its own unique #GOnce struct.