GLib.idle_add(function) 不同的函数有不同的策略

GLib.idle_add(function) has different policies for different functions

我有一个 GTK window。事实证明,如果我从一个单独的线程使用 idle_add(window.queue_draw) 一次安排多个重绘调用,没有任何延迟,则只会执行一个调用。

而如果我这样做 idle_add(custom_function),每次对 custom_function 的预定调用都会 运行。

虽然很明显这是为了优化,但我看不到 if/where 文档 [1] 中提到了这一点,我也想知道 idle_add 是否还有其他此类规则.

[1] https://developer.gnome.org/pygobject/stable/glib-functions.html

实际上并不是 idle_add 造成了这种行为。由 queue-redraw 调用的 widget-queue-draw-region 的文档声明重绘仅在主循环不再繁忙后完成。