2012-05-27 62 views
4

線程A:Gtkmm的消息循環運行的UI線程。線程B:通過網絡接收數據並將其記錄到文件中。Gtkmm:如何從另一個線程更新UI?連續

現在我想要將相同的數據轉儲到線程B中的一個文件中,同時也要顯示在UI上的Gtk :: TextView中。什麼是最好的方法來做到這一點?

Glib :: Dispatcher不會一起獲取數據。所以只有通知工作完成纔有用。

libSigCX讓我難過。

回答

4

我會嘗試使用Glib::Dispatcher以及Glib::Threads::Mutex(或等效)保護std::queue<std::string>數據結構。在將其放入隊列後,使用調度程序通知每個工作項的UI線程。

0

也許你應該將一個UI結構指針作爲參數傳遞給線程B.該結構已經分配了所有的信號,你可以使用TextView。