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