Многозадачность с GTK - PullRequest
0 голосов
/ 09 марта 2011

Как бы я запустил постоянный процесс в фоновом режиме при работающем значке gtk на панели задач? Буду ли я просто запускать два потока и запускать процесс с одним значком на панели задач? Или есть лучший способ? Извините, но я немного новичок в GTK.

Ответы [ 2 ]

4 голосов
/ 24 марта 2011

Если я правильно понимаю, то у вас в системном трее есть приложение, и оно должно периодически проверять наличие внешних условий.

Ваш поток GUI не может блокировать в течение длительного времени, или он будетперестать отвечать на запросы.

Я могу придумать три способа решения этой проблемы:

  • Использовать таймер для периодического опроса основного потока (GUI) ( g_timeout_add () или аналогичный).
  • Создайте отдельный поток, который запускает цикл ожидания ожидания (проверьте состояние; сон; проверьте; промойте и повторите).Glib имеет поддержку абстракции потоков , которую вы можете использовать; пример использования GThread в Brasero .
  • Используйте асинхронный ввод-вывод для проверки состояния.Если вы отслеживаете изменения в файле или каталоге, вы можете использовать GFileMonitor из GIO.
0 голосов
/ 09 марта 2011

Не думаю, что вам нужны какие-то темы в вашем примере. Что именно вы называете «постоянным процессом»?

Либо это так:

  • функция обработки блокировки, которую вы сделали, и вы можете выполнять свою обработку в обратном вызове, который будет вызываться, когда ваша программа простаивает, разделив ее на несколько частей (см. g_idle_add и пример ленивая загрузка )
  • или это то, что обычно называется процессом (с PID), и, поскольку он выполняется в совершенно отдельном процессе, вам также не нужны потоки. Прочтите официальную документацию, чтобы узнать, как запустить процесс из приложения GTK.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...