2011-12-18 4 views
1

У меня есть приложение GTK + с GtkTextBuffer. Он использует несколько рабочих потоков, которые выполняют несколько длительных операций. Эти потоки могут сообщать о своем прогрессе в текстовом формате. Я хочу показать подробную информацию о том, как работает рабочий поток. Не могли бы вы рассказать мне, как получать данные от рабочего потока?GTK + Application: Получить вход от рабочего потока

Я думал, что могу испускать сигнал «insert-text» из рабочего потока, но не могу найти подходящий пример во время поиска. Буду признателен за любую оказанную помощь.

+0

Что вы не можете найти? – ptomato

+0

Пример того, как запускать сигнал из рабочего потока. Могу ли я это сделать? –

+0

Это то же самое, что и излучение сигнала из основного потока - 'g_signal_emit()' или 'g_signal_emit_by_name()'. Обработчик сигнала вызывается из основного потока с блокировкой GDK. – ptomato

ответ

0

Классический быстрый и грязный: напишите свои статусные обновления в связанный список (защищенный некоторым примитивом sync), попросите GTK провести его опрос через таймер.

1

Вы можете использовать GAsyncQueue для обмена сообщениями между вашим пользовательским интерфейсом и рабочим потоком, это очень готовый API для связи.

+0

Я посмотрел API (спасибо за это). Однако мне не очевидно, как передавать сигналы через основной цикл. Пульсинг для них (либо с помощью таймера, либо бездействия) неэффективен. Я просто хотел бы получить информацию, когда произошло что-то интересное. Вот почему я подумал о том, как стрелять из рабочих потоков. –

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