函数

GLibdatalist_id_dup_data

since: 2.34

声明 [src]

gpointer
g_datalist_id_dup_data (
  GData** datalist,
  GQuark key_id,
  GDuplicateFunc dup_func,
  gpointer user_data
)

描述 [src]

这是g_datalist_id_get_data()的一个变体,它返回一个值的“副本”。在这种情况下,dup_func定义了“副本”的含义,例如,它可以在引用计数对象上引用。

如果key_id没有在 datalist 中设置,则dup_func将使用NULL参数进行调用。

注意,dup_func在 datalist 被锁定时被调用,因此不允许读取或修改 datalist。

当多个线程使用同一个 datalist 和相同的 key 时,此函数可用于避免竞争。

自:2.34 起可用

此函数不直接向语言绑定提供。

参数

datalist

类型: GData

 datalist 的位置。

数据由函数的调用方所有。
key_id

类型: GQuark

标识数据 元素的GQuark

dup_func

类型: GDuplicateFunc

复制旧 value 的函数。

参数可以为NULL
user_data

类型: gpointer

作为dup_funcuser_data 传递。

参数可以为NULL
数据由函数的调用方所有。

返回值

类型: gpointer

datalist中与 key_id 关联的值上调用 dup_func 的结果,或者在未设置时返回 NULL。如果 dup_funcNULL,则该值 返回为未修改。

数据由被调用函数拥有。
返回值可以为 NULL