函数
GLibtimeout_add
声明 [src]
guint
g_timeout_add (
guint interval,
GSourceFunc function,
gpointer data
)
描述 [src]
设置一个在固定时间间隔调用的函数,具有默认优先级 G_PRIORITY_DEFAULT
。
给定的 function
会重复调用直到返回 G_SOURCE_REMOVE
或 FALSE
,此时会自动销毁超时,且不再调用函数。第一次调用函数将在第一个 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
。数据归函数的调用方所有。