Function Macro
GLibonce
since: 2.4
Declaration [src]
#define g_once (
once,
func,
arg
)
Description [src]
The first call to this routine by a process with a given GOnce
struct calls func
with the given argument. Thereafter, subsequent
calls to g_once()
with the same GOnce
struct do not call func
again, but return the stored result of the first call. On return
from g_once(), the status of once
will be G_ONCE_STATUS_READY
.
For example, a mutex or a thread-specific data key must be created
exactly once. In a threaded environment, calling g_once()
ensures
that the initialization is serialized across multiple threads.
Calling g_once()
recursively on the same GOnce
struct in
func
will lead to a deadlock.
gpointer
get_debug_flags (void)
{
static GOnce my_once = G_ONCE_INIT;
g_once (&my_once, parse_debug_flags, NULL);
return my_once.retval;
}
Available since: 2.4
This function is not directly available to language bindings.