函数

GLibtimeout_add

声明 [src]

guint
g_timeout_add (
  guint interval,
  GSourceFunc function,
  gpointer data
)

描述 [src]

设置一个在固定时间间隔调用的函数,具有默认优先级 G_PRIORITY_DEFAULT

给定的 function 会重复调用直到返回 G_SOURCE_REMOVEFALSE,此时会自动销毁超时,且不再调用函数。第一次调用函数将在第一个 interval 结束时进行。

请注意,可能会延迟超时函数,因为要处理其他事件源。因此,不应依赖于此函数来进行精确计时。每次调用超时函数后,下次超时的的时间都会根据当前时间和给定的时间间隔重新计算(它不会尝试在延迟内“赶上”时间)。

有关如何处理返回值和 data 的内存管理的详细信息,请参阅 主循环内存管理

如果你想要一个在“秒”范围内的计时器,且不关心计时器的第一次调用的准确时间,请使用 g_timeout_add_seconds() 函数;该函数允许更多优化和更有效的系统功耗。

此方法在内部使用 g_timeout_source_new() 创建一个主循环源,并使用 g_source_attach() 将其附加到全局 GMainContext,因此将在运行该主上下文的任何线程调用回调。如果你需要更大的控制或使用自定义主上下文,可以手动执行这些步骤。

可以从任何线程安全地调用此函数。

给定的时间间隔以单调时间计算,而不是时钟时间。请参阅 g_get_monotonic_time()

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

语言绑定中由 g_timeout_add_full() 提供此函数的实现。

参数

interval

类型: guint

以毫秒(1/1000 秒)为单位的函数调用之间的间隔时间。

function

类型: GSourceFunc

要调用的函数。

data

类型: gpointer

传递给 function 的数据。

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

返回值

类型: guint

事件源的 ID(大于 0)。