Gtkmm:如何从另一个线程更新 UI?连续不断
Posted
技术标签:
【中文标题】Gtkmm:如何从另一个线程更新 UI?连续不断【英文标题】:Gtkmm : How to update UI from another thread? continuously 【发布时间】:2012-05-27 13:42:50 【问题描述】:线程 A:运行 Gtkmm 消息循环的 UI 线程。
线程 B:通过网络接收数据并将其记录到文件中。
现在我希望在线程 B 中转储到文件中的相同数据也同时显示在 UI 上的 Gtk::TextView 中。最好的方法是什么?
Glib::Dispatcher 不带数据。所以它只适用于通知已完成的工作。
libSigCX 让我很难过。
【问题讨论】:
【参考方案1】:我会尝试使用Glib::Dispatcher
以及Glib::Threads::Mutex
(或等效)受保护的std::queue<std::string>
数据结构。将每个工作项放入队列后,使用调度程序通知 UI 线程。
【讨论】:
【参考方案2】:您可能应该将 UI 结构指针作为参数传递给线程 B。该结构已经分配了所有信号,您可以使用 TextView。
【讨论】:
以上是关于Gtkmm:如何从另一个线程更新 UI?连续不断的主要内容,如果未能解决你的问题,请参考以下文章