vern@2006-09-08:/var% ls tags

在gtk中使用线程

用Glib::Thread + Gdk,前者相当于pthread,不过是Glib的实现而已。后者应该和Gnome控件有关,如果我们更新某一个gtk(mm)控件而不让gdk锁一锁的话,会出现这样的错误: Xlib: unexpected async reply (sequence 0x842b)!。

在main函数中尽早申明,注意Gtk::Main::run()前后的包裹 g_thread_init(NULL); gdk_threads_init(); .. gdk_threads_enter(); Gtk::Main::run(YourGui); gdk_threads_leave();

将来,在某个线程中,需要对界面的某个控件作写操作时,用gdk_threads_enter()和gdk_threads_leave()包裹起来就行了