Once.initEnter

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:

|[<!-- language="C" --> 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.

class Once
static
bool
initEnter
(
void* location
)

Parameters

location void*

location of a static initializable variable containing 0

Return Value

Type: bool

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

Meta

Since

2.14