函数

GLibOnceinit_enter

since: 2.14

声明 [src]

gboolean
g_once_init_enter (
  void* location
)

描述 [src]

当启动关键初始化章节时要调用的函数。参数 location 必须指向一个静态 0 初始化的变量,该变量将在初始化章节结束时被设置为非 0 的值。与 g_once_init_leave() 和唯一的地址 value_location 结合使用,可以确保初始化章节在一次程序的生命周期内只执行一次,并且直到初始化完成,并发线程将被阻塞。用于此类结构的构造

  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

locationvolatile 标识符时,这是一个历史遗迹,传递给它的指针不应为 volatile

自从:2.14

参数

location

类型: void*

含有 0 的静态初始化变量的位置。

此参数将由函数修改。

返回值

类型: gboolean

TRUE 如果应该进入初始化章节,否则 FALSE 并阻塞。