线程A:Gtkmm消息循环运行的UI线程。
线程B:通过网络接收数据并将其记录到文件中。
现在我希望将相同的数据转储到线程B中的文件中,同时也要在UI上的Gtk :: TextView中显示。最好的方法是什么?
Glib :: Dispatcher不会接收数据。因此,只有通知工作完成才有用。
libSigCX让我伤心。
答案 0 :(得分:5)
我会尝试使用Glib::Dispatcher
以及Glib::Threads::Mutex
(或等效的)受保护的std::queue<std::string>
数据结构。在将每个工作项放入队列后,使用调度程序通知UI线程。
答案 1 :(得分:0)
可能是你应该将UI结构指针作为参数传递给线程B.结构已经分配了所有信号,你可以使用TextView。