我正在创建一个带有g_timeout_add
或g_timeout_add_seconds
返回事件 ID 的事件;我可以通过调用取消活动g_source_remove
。
但是,在某些时候,我想做的是查看在触发事件之前还剩多少时间。有没有一种简单的方法可以使用 glib api 执行此操作,还是我需要手动存储和比较时间戳g_source_get_current_time
?
在 GLib 中没有合理的方法可以做到这一点。
不合理的方法是获取 GSource (g_main_context_find_source_by_id),然后在 GSource 上调用 source->source_funcs->prepare() 操作,这将返回直到应该分派源的时间。这有点粗略: source_funcs 是私有的,而 prepare() 并不是真正打算在主循环内部使用的。
最好我能说它会起作用。我没试过。
保存开始时间+超时间隔,当您想知道剩余时间时从当前时间减去。