函数
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。数据归函数的调用方所有。