Проблемы с перерисовкой в ​​GTK+

У меня есть вызов внешней программы, которая открывает "модальное" окно, так как оно находится в том же потоке, что и основной цикл, оно блокирует перерисовку нижележащего окна.

Программа работает как отдельный процесс, и я общаюсь с программой по каналам.

Из того, что я прочитал, плохо иметь дополнительный основной цикл, так как правильно избежать этой блокировки?

Вопрос в том, как создать отдельный поток в моей собственной программе для связи с этой программой, не блокируя весь основной цикл.

1 ответ

Решение

Используйте неблокирующий API для запуска внешней программы, такой как GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.html или API порождения нижнего уровня https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html

Вы также можете использовать поток, но приведенные выше API намного проще.

Вы должны каким-то образом вернуть управление главному циклу во время работы подпроцесса, это нижняя строка.

Другие вопросы по тегам