【问题标题】:How to wait for a Glib::Dispatcher's connected function to finish?如何等待 Glib::Dispatcher 的连接函数完成?
【发布时间】: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


    【解决方案1】:

    我想我现在终于偶然发现了这个问题的答案。我使用std::condition_variable 来阻止线程之间的执行和通信。似乎运作良好 - 我希望它保持这样:D

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2019-06-16
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多