我需要在执行时修改GLib的超时间隔.那可能吗?我查看了源代码,对我来说似乎是可能的,但是需要使用GLib内部的一些非公共函数.我应该重新实现GTimeoutSource还是有办法做到这一点?
在超时函数中,您可以使用新的超时间隔重新添加该函数,然后返回FALSE以删除旧间隔的超时:
gboolean
my_timeout_function(gpointer data)
{
// do stuff
// ...
if(need_to_change_interval)
{
g_timeout_add(new_interval, (GSourceFunc)my_timeout_function, data);
return FALSE;
}
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)