结构
GLibStaticPrivate
说明 [源代码]
struct GStaticPrivate {
/* No available fields */
}
GStaticPrivate
的工作方式几乎与 GPrivate
相同,但它有一个显著优势。它不需要像 GPrivate
那样在运行时创建,而是在编译时定义。这类似于 GMutex
和 GStaticMutex
之间的区别。
现在,看看我们使用 GStaticPrivate
的 give_me_next_number()
示例
int
give_me_next_number ()
{
static GStaticPrivate current_number_key = G_STATIC_PRIVATE_INIT;
int *current_number = g_static_private_get (¤t_number_key);
if (!current_number)
{
current_number = g_new (int, 1);
*current_number = 0;
g_static_private_set (¤t_number_key, current_number, g_free);
}
*current_number = calc_next_number (*current_number);
return *current_number;
}
实例方法
g_static_private_set
为当前线程设置以 private_key
为键的指针,并设置函数 notify
,以便每当再次设置该指针或当前线程结束时,都会使用该指针(NULL
或非 NULL
)调用该函数。