Проблемы с перерисовкой в GTK+
У меня есть вызов внешней программы, которая открывает "модальное" окно, так как оно находится в том же потоке, что и основной цикл, оно блокирует перерисовку нижележащего окна.
Программа работает как отдельный процесс, и я общаюсь с программой по каналам.
Из того, что я прочитал, плохо иметь дополнительный основной цикл, так как правильно избежать этой блокировки?
Вопрос в том, как создать отдельный поток в моей собственной программе для связи с этой программой, не блокируя весь основной цикл.
1 ответ
Используйте неблокирующий API для запуска внешней программы, такой как GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.html или API порождения нижнего уровня https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html
Вы также можете использовать поток, но приведенные выше API намного проще.
Вы должны каким-то образом вернуть управление главному циклу во время работы подпроцесса, это нижняя строка.