【发布时间】:2016-09-04 01:11:19
【问题描述】:
我目前正在使用 Gtk 进行多线程处理,因为我想异步更新 Gtk::TreeView 中的行,这样用户就不必等待更新它们的函数,直到他可以使用程序,它只会在后台执行。
所以我正在使用一个Glib::Thread,它正在运行收集数据的更新函数,并且我已经将一个函数连接到Glib::Dispatcher,然后它将更新实际视图。
当我从我的线程数据收集器中调用Glib::Dispatcher 时,这工作正常,在它完成收集内容之后,但如果我每次它完成收集一行数据时调用它,并让Glib::Dispatcher 连接函数只是更新这一行,它会导致非常奇怪的结果,我认为,因为如果我从线程调用my_dispatcher(),它正在异步运行连接的函数并且不等待它完成。
有什么方法可以告诉在单独线程中运行的函数,它应该等待Glib::Dispatcher 的连接函数完成(如使用连接),但不会阻塞我的主线程,这样就可以了其他线程在等待吗?
【问题讨论】:
标签: c++ multithreading asynchronous glib gtkmm