我打电话给外部程序打开一个"模态"窗口,因为它与主循环在同一个线程中,它阻止重新绘制底层窗口。
程序作为一个单独的进程运行,我通过管道与程序通信。
从我已经阅读的不良做法中获得额外的主循环,那么避免这种锁定的正确方法是什么?
问题是如何在我自己的程序中创建一个单独的线程来与该程序进行通信,而不会阻塞整个主循环。
答案 0 :(得分:1)
使用非阻止API运行外部程序,例如GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.html或较低级别的spawn https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html
您也可以使用线程,但上述API更容易。
在子进程运行时,你必须以某种方式将控制权返回给主循环,这就是底线。