【发布时间】:2012-05-27 13:42:50
【问题描述】:
线程 A:运行 Gtkmm 消息循环的 UI 线程。
线程 B:通过网络接收数据并将其记录到文件中。
现在我希望在线程 B 中转储到文件中的相同数据也同时显示在 UI 上的 Gtk::TextView 中。最好的方法是什么?
Glib::Dispatcher 不带数据。所以它只适用于通知已完成的工作。
libSigCX 让我很难过。
【问题讨论】:
标签: c++ multithreading signals gtkmm
线程 A:运行 Gtkmm 消息循环的 UI 线程。
线程 B:通过网络接收数据并将其记录到文件中。
现在我希望在线程 B 中转储到文件中的相同数据也同时显示在 UI 上的 Gtk::TextView 中。最好的方法是什么?
Glib::Dispatcher 不带数据。所以它只适用于通知已完成的工作。
libSigCX 让我很难过。
【问题讨论】:
标签: c++ multithreading signals gtkmm
我会尝试使用Glib::Dispatcher 以及Glib::Threads::Mutex(或等效)受保护的std::queue<std::string> 数据结构。将每个工作项放入队列后,使用调度程序通知 UI 线程。
【讨论】:
您可能应该将 UI 结构指针作为参数传递给线程 B。该结构已经分配了所有信号,您可以使用 TextView。
【讨论】: