2012-05-27 4 views
4

Резьба A: поток пользовательского интерфейса, где выполняется цикл сообщений Gtkmm.Gtkmm: Как обновить интерфейс из другого потока? непрерывно

Тема B: получает данные по сети и записывает их в файл.

Теперь я хочу, чтобы те же данные, которые были сброшены в файл в потоке B, также должны отображаться одновременно в Gtk :: TextView в пользовательском интерфейсе. Каков самый лучший способ сделать это?

Glib :: Dispatcher не берет данные. Так что это полезно только для уведомления о работе.

libSigCX только меня огорчает.

ответ

4

Я бы попытался использовать Glib::Dispatcher вместе с Glib::Threads::Mutex (или аналогичным) защищенным std::queue<std::string> структура данных. Используйте диспетчер, чтобы уведомить поток пользовательского интерфейса каждого рабочего элемента после того, как вы поместили его в очередь.

0

Может быть, вы должны передать указатель структуры пользовательского интерфейса в качестве параметра для потока В. Структура уже имеет все сигналы, назначенные таким образом, что вы можете использовать TextView.

 Смежные вопросы

  • Нет связанных вопросов^_^