函数宏
GLibonce
since: 2.4
声明 [src]
#define g_once (
once,
func,
arg
)
说明 [src]
对于具有给定的 GOnce
结构的进程,对此例程的首次调用将使用给定的参数调用 func
。此后,使用相同的 GOnce
结构对 g_once()
的后续调用不会再次调用 func
,而是返回第一次调用的存储结果。从 g_once() 返回后,once
的状态将变为 G_ONCE_STATUS_READY
。
例如,必须只创建一个互斥或线程级数据键。在多线程环境中,调用 g_once()
可确保初始化在多个线程上串行化。
在 func
中对同一 GOnce
结构递归调用 g_once()
会导致死锁。
gpointer
get_debug_flags (void)
{
static GOnce my_once = G_ONCE_INIT;
g_once (&my_once, parse_debug_flags, NULL);
return my_once.retval;
}
自 2.4 起可用
语言绑定不能直接调用此函数。