功能

GLibtimeout_add_full

声明 [src]

guint
g_timeout_add_full (
  gint priority,
  guint interval,
  GSourceFunc function,
  gpointer data,
  GDestroyNotify notify
)

说明 [src]

设置一个按照给定的优先级定期调用的函数。该函数将被重复调用直至其返回 FALSE,在该时间点,超时将自动停止且该函数不会再次被调用。该 notify 函数将在超时停止时被调用。对该函数的首次调用将在第一个 interval 的末尾。

注意,由于处理其他事件源,超时函数可能会延迟。因此,不应依赖于它们实现精确的时间控制。在对超时函数的每次调用后,下一个超时的发生时间基于当前时间和给定的间隔重新计算(它不会尝试“追赶”在延迟期间内损失的时间)。

有关如何处理 data 的返回值和内存管理的详情,请参阅 主线程内存管理

该功能在内部使用 g_timeout_source_new() 创建一个主线程源,并利用 g_source_attach() 将其附加到全局 GMainContext,所以该回调将在运行该主线程的任何线程中被调用。如果您需要更大的控制或使用自定义主线程,则可以手动完成这些步骤。

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

该函数在语言绑定中被重命名为 g_timeout_add()

参数

priority

类型: gint

超时源的优先级。这通常介于 G_PRIORITY_DEFAULTG_PRIORITY_HIGH 之间。

interval

类型: guint

对该函数的每次调用的毫秒数间隔(以千分之一秒为单位)。

function

类型: GSourceFunc

要调用的函数。

data

类型: gpointer

要传递给 function 的数据。

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

类型: GDestroyNotify

在超时被移除时要调用的函数,或 NULL

该参数可以为 NULL

返回值

类型: guint

事件源的 ID(大于 0)。