GTK+ 多线程操作
操作 UI 元素时,早期一般都是使用gdk_thread_enter() / gdk_thread_leave() 来进行线程间同步。
但是 GTK+ 3.6 开始,不建议使用该函数对。仔细考虑下,似乎有些道理。频繁的调用 gdk_thread_enter() / gdk_thread_leave()确实影响 GTK+ 的性能,并且容易出现莫名的错误。但是,如何解决在多线程环境下,
其他线程对主UI元素的操作呢?有以下常用的 3 个方法:
1) 使用 signal 机制
这也是一种同步机制,我们需要在主线程添加自定义的信号和该信号的callback函数,
并连接该信号到一个 gobject 上去。在其他线程emit该信号即可。
常用的函数: