【问题标题】:Redraw issues in GTK+GTK+ 中的重绘问题
【发布时间】:2015-06-28 13:03:48
【问题描述】:

我调用了一个打开“模态”窗口的外部程序,因为它与主循环在同一个线程中,它阻止了底层窗口的重绘。

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

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

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

【问题讨论】:

  • 为外部程序启动一个新进程?
  • 它在一个新进程中,我需要通过管道与它通信。
  • 问题是如果您在一个线程中打开了一个窗口,并直接在另一个线程中操作它。如果您真的使用多个进程,那没关系,因为它们是完全分开的。请更新您的标签以反映从线程到进程的问题的重大变化。

标签: multithreading gtk multiple-processes


【解决方案1】:

使用非阻塞 API 运行外部程序,例如 GSubprocess https://developer.gnome.org/gio/stable/GSubprocess.html 或较低级别的 spawn API https://developer.gnome.org/glib/stable/glib-Spawning-Processes.html

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

您必须在子进程运行时以某种方式将控制权返回给主循环,这是底线。

【讨论】:

  • 我查看了子进程,直到你写了这个才注意到它是异步选项,谢谢。
猜你喜欢
  • 2016-07-29
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多