功能
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_REMOVE
或 FALSE
,此时超时会自动销毁,并且不再调用该函数。
与 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_DEFAULT
和G_PRIORITY_HIGH
之间。 interval
-
类型:
guint
以秒为单位的调用该函数之间的时间间隔。
function
-
类型:
GSourceFunc
要调用的函数。
data
-
类型:
gpointer
传递给
function
的数据。该参数可以为 NULL
。数据由函数调用方拥有。 notify
-
类型:
GDestroyNotify
超时被去除时调用的函数,或
NULL
。该参数可以为 NULL
。