Gtkmm:如何从另一个线程更新UI?一直

时间:2012-05-27 13:42:50

标签: c++ multithreading signals gtkmm

线程A:Gtkmm消息循环运行的UI线程。

线程B:通过网络接收数据并将其记录到文件中。

现在我希望将相同的数据转储到线程B中的文件中,同时也要在UI上的Gtk :: TextView中显示。最好的方法是什么?

Glib :: Dispatcher不会接收数据。因此,只有通知工作完成才有用。

libSigCX让我伤心。

2 个答案:

答案 0 :(得分:5)

我会尝试使用Glib::Dispatcher以及Glib::Threads::Mutex(或等效的)受保护的std::queue<std::string>数据结构。在将每个工作项放入队列后,使用调度程序通知UI线程。

答案 1 :(得分:0)

可能是你应该将UI结构指针作为参数传递给线程B.结构已经分配了所有信号,你可以使用TextView。