功能

GLibtimeout_add_seconds_full

自:2.14 起

定义 [源代码]

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

描述 [源代码]

设置一个定期调用的函数,采用 priority 优先级。

该函数会重复调用,直至返回 G_SOURCE_REMOVEFALSE,此时超时会自动销毁,并且不再调用该函数。

g_timeout_add() 不同,此功能以整体秒精度运行。时的初始起点取决于实现,并且实现应将多个计时器组合在一起,以便它们同时触发。为了允许这种组合,第一个计时器的 interval 会四舍五入,并且可偏离指定间隔最长一秒。随后的计时器迭代通常会在指定间隔内运行。

请注意,由于处理其他事件源而可能延迟超时功能。因此,它们不应被依赖于精确计时。每次调用超时功能后,下一次超时的的时间会根据当前时间和给定的 interval 重新计算

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

如果您希望比整个秒更精确的计时,请使用 g_timeout_add()

将计时器分组以同时触发会导致更省电且 CPU 效率更高的行为,因此,如果您的计时器是以秒为倍数,并且您不需要第一个计时器从现在起正好一秒,则优先使用 g_timeout_add_seconds() 而不是 g_timeout_add()

它在内部使用 g_timeout_source_new_seconds() 创建一个主循环源,并使用 g_source_attach() 将其附加到主循环上下文。如果您需要更高的控制,可以手动执行这些步骤。

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

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

自 2.14 起提供

此功能在语言绑定中重命名为 g_timeout_add_seconds()

参数

priority

类型: gint

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

interval

类型: guint

以秒为单位的调用该函数之间的时间间隔。

function

类型: GSourceFunc

要调用的函数。

data

类型: gpointer

传递给 function 的数据。

该参数可以为 NULL
数据由函数调用方拥有。
notify

类型: GDestroyNotify

超时被去除时调用的函数,或 NULL

该参数可以为 NULL

返回值

类型: guint

事件ID(大于0)。