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 的文档声明重绘仅在主循环不再繁忙后完成。
我有一个 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 的文档声明重绘仅在主循环不再繁忙后完成。