我目前正在使用Gtk进行多线程,因为我想异步地更新Gtk::TreeView中的行,以便用户不必等到可以更新程序的功能就可以使用该程序,只会在后台执行。

因此,我正在使用Glib::Thread运行正在运行的更新功能来收集数据,并且我已将一个功能连接到Glib::Dispatcher,然后该功能将更新实际视图。

当我从线程数据收集器中调用Glib::Dispatcher完成收集内容后调用它时,它工作正常,但是如果我每次完成行数据的收集后都调用它,并让Glib::Dispatcher的连接函数只是更新此行会导致非常奇怪的结果,这是我想的,因为如果我从线程中调用my_dispatcher(),它将异步运行连接的函数,而不必等待它完成。

我有什么办法可以告诉在单独线程中运行的函数,它应该等待Glib::Dispatcher的连接函数完成(例如使用join),但又不要阻塞我的主线程,这样就可以使另一个线程等待吗?

最佳答案

我想我现在终于迷失了答案。我使用std::condition_variable阻止执行并在线程之间进行通信。似乎工作良好-我希望它保持这样:D

关于c++ - 如何等待Glib::Dispatcher的连接函数完成?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39312702/

10-15 12:07