结构
GLibOnce
自版本:2.4 起
说明 [src]
struct GOnce {
volatile GOnceStatus status;
volatile gpointer retval;
}
GOnce
结构控制一次性初始化函数。任何一次性初始化函数都必须有其自己独特的 GOnce
结构。
结构成员
status
GOnce
的状态。retval
如果
status
为G_ONCE_STATUS_READY
,则值为函数调用返回的值。
自版本:2.4 起可用
函数
g_once_init_enter
开始一个关键初始化部分时要调用的函数。参数 location
必须指向在初始化部分的结尾设置成 0 以外的值的静态 0 初始化变量。结合 g_once_init_leave()
和独一无二的地址 value_location
,可以确保在程序运行时只执行一次初始化部分,并且在初始化完成之前会阻塞并发线程。用于类似这样的结构中。:
自版本:2.14 起
g_once_init_enter_pointer
此函数的行为与 g_once_init_enter() 相同,但是可以用来初始化指针(或 #guintptr),而不是 #gsize。
自版本:2.80 起
g_once_init_leave
g_once_init_enter() 的对应部分。需要一个静态 0 初始化的初始化变量的位置,以及 0 以外的初始化值。将变量设置成初始化值,并释放该初始化变量的 g_once_init_enter()
中阻塞的并发线程。
自版本:2.14 起
g_once_init_leave_pointer
g_once_init_enter_pointer() 的对应部分。需要一个静态 NULL
初始化的初始化变量的位置,以及 0 以外的初始化值。将变量设置成初始化值,并释放该初始化变量的 g_once_init_enter_pointer()
中阻塞的并发线程。
自版本:2.80 起