我正在使用gtk结合线程编写python软件。现在有一部分我必须使用像gobject.idle_add(function)
这样的东西。
我的问题是,在传递给idle_add的函数完成后,该调用之后的部分应该真正执行。
do_some_things_before()
gobject.idle_add(do_something)
do_some_things_after()
我的问题是:gobject.idle_add(do_something)
会阻止do_something()
执行完毕吗?
谢谢, patsimm
答案 0 :(得分:3)
没有。 idle_add()
只是将您的函数排队,以便下次没有事件待处理时运行。您需要添加一些同步代码。
此外,如果回调函数返回GLib常量TRUE
(不确定PyGTK +等价物是什么),则该函数将在下一个空闲点重新排队,因此等待可能的函数没有意义从来没有真正完成。 (返回FALSE
以从队列中删除该函数。)
我没有在PyGTK +参考中看到对等效gdk_threads_idle_add()
的引用;我将假设您正在调用的那个也将在GUI线程上运行该函数。