Once

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

Members

Static functions

initEnter
bool initEnter(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:

initEnterImpl
bool initEnterImpl(size_t location)
initEnterPointer
bool initEnterPointer(void* location)

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.

initLeave
void initLeave(void* location, size_t result)

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.

initLeavePointer
void initLeavePointer(void* location, void* result)

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.