将gobject.idle_add(函数)阻塞直到执行函数完成?

时间:2014-11-11 13:50:13

标签: python gtk pygtk gobject

我正在使用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

1 个答案:

答案 0 :(得分:3)

没有。 idle_add()只是将您的函数排队,以便下次没有事件待处理时运行。您需要添加一些同步代码。

此外,如果回调函数返回GLib常量TRUE(不确定PyGTK +等价物是什么),则该函数将在下一个空闲点重新排队,因此等待可能的函数没有意义从来没有真正完成。 (返回FALSE以从队列中删除该函数。)

我没有在PyGTK +参考中看到对等效gdk_threads_idle_add()的引用;我将假设您正在调用的那个也将在GUI线程上运行该函数。