GTK+ 中的重绘问题

Redraw issues in GTK+

我调用了一个打开 "modal" window 的外部程序,因为它与主循环在同一个线程中,它阻止了底层 window 的重绘。

程序作为一个单独的进程运行,我通过管道与程序通信。

根据我的阅读,有一个额外的主循环是不好的做法,那么避免这种锁定的正确方法是什么?

问题是如何在我自己的程序中创建一个单独的线程来与该程序进行通信而不阻塞整个主循环。

使用非阻塞API到运行外部程序,例如GSubprocesshttps://developer.gnome.org/gio/stable/GSubprocess.html or the lower level spawn API https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html

您也可以使用线程,但上述 API 更容易。

您必须以某种方式 return 控制主循环,而子进程 运行s,这是底线。